51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Nginx 配置技巧:如何在 443 端口上实现 TCP 和 UDP 流量的共存与分流

如果UDP服务和TCP服务共用443端口,Nginx分流的方式

综上两个模块提供了Nginx实现基于SSL的TCP流量和UDP流量分流的功能。

                  stream {
    # 根据SNI映射backend_name,非TCP流量是识别不出SNI,默认是空,直接走defalut
    map $ssl_preread_server_name $backend_name { 

        1.example.com site1; 
        2.example.com site1;  
        default default_server;
    }
    # 自定义的上游服务,http模块里的内容
    upstream site1{
        server 127.0.0.1:40010;
    }
    upstream site2{
        server 127.0.0.1:40011;
    }
    upstream udp_server{
        server 127.0.0.1:50000;
    }
    upstream default_server{
        server 127.0.0.1:50000;
    }


    server { # 监听TCP流量
        listen 443;
        listen [::]:443;

        ssl_preread on;

        proxy_pass $backend_name; # 指定代理到哪个上游服务
        proxy_protocol on;

    }

    server { # 监听UDP流量
        listen 443 udp;
        listen [::]:443 udp;
        proxy_protocol on;
        proxy_pass udp_server;
        proxy_timeout 20s;
    }




}


                </code>
              </pre>

http 下面 sever里面照常按ssl配置写即可,比如1.example.com

                  server {
    listen 127.0.0.1:40010 ssl proxy_protocol;
    listen [::]:40010 ssl  proxy_protocol;

    server_name 1.example.com;
    http2 on;

    set_real_ip_from 127.0.0.1;
    real_ip_header proxy_protocol;

    client_max_body_size 1024m;

    ssl_certificate ssl/.crt;
    ssl_certificate_key ssl/.key;
    ssl_trusted_certificate ssl/.ca.crt;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305;
    ssl_ecdh_curve secp521r1:secp384r1:secp256r1:x25519;

    location / {

    }




}


                </code>
              </pre>

参考


赞(0)
未经允许不得转载:工具盒子 » Nginx 配置技巧:如何在 443 端口上实现 TCP 和 UDP 流量的共存与分流