From c1e598b3ab9f092e53207076d0549aef44e85b11 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Sat, 15 Mar 2025 13:40:38 +0300 Subject: [PATCH] [+] update nginx multiplexing --- d1/nginx_config.py | 49 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/d1/nginx_config.py b/d1/nginx_config.py index 57a5556..3572036 100644 --- a/d1/nginx_config.py +++ b/d1/nginx_config.py @@ -217,20 +217,29 @@ def ssl(input_json, output_conf): upstream_servers = [] server_names = [] - for k, v in ssl_nginx['stream_server'].items(): - upstream_servers.append( - 'upstream %s { server %s; }' % ( - v['upstream_name'], - v['url'], + if 'by_server_name' in ssl_nginx['stream_server']: + for k, v in ssl_nginx['stream_server']['by_server_name'].items(): + upstream_servers.append( + 'upstream %s { server %s; }' % ( + v['upstream_name'], + v['url'], + ) ) - ) - server_names.append( - '"%s" %s;' % ( - v['server_name'], v['upstream_name'], + server_names.append( + '"%s" %s;' % ( + v['server_name'], v['upstream_name'], + ) ) - ) + if 'ssh' in ssl_nginx['stream_server']: + ssh_section = 'upstream ssh { server {ssh}; }'.replace( + '{ssh}', + ssl_nginx['stream_server']['ssh'], + ) + else: + ssh_section = '' + ssl_port = 444 stream_server = r''' stream { @@ -240,17 +249,15 @@ stream { {upstream_servers} - #upstream ssh { - # server {ssh}; - #} + {ssh_section} - #map $ssl_preread_protocol $upstream { - # default ssh; - # "TLSv1.2" web; - # "TLSv1.3" web; - #} + map $ssl_preread_protocol $upstream_protocol { + default ssh; + "TLSv1.2" $upstream_server_name; + "TLSv1.3" $upstream_server_name; + } - map $ssl_preread_server_name $upstream { + map $ssl_preread_server_name $upstream_server_name { default web; {server_names} } @@ -260,7 +267,7 @@ stream { listen 443; ssl_preread on; - proxy_pass $upstream; + proxy_pass $upstream_protocol; } } '''.replace( @@ -268,6 +275,8 @@ stream { ' ' + o + '\n' for o in upstream_servers ]), + ).replace( + '{ssh_section}', ssh_section, ).replace( '{server_names}', ''.join([ ' ' + o + '\n'