轶哥

📚 Having fun with AI Agent. Always learning.

    Nginx通过域名进行TCP反向代理
    •   更新:2021-03-08 11:12:02
    •   首发:2021-03-08 00:19:58
    •   教程
    •   6533

    使用Nginx可以实现根据域名进行TCP反向代理到不同的内网服务器。

    应用场景

    一家公司购买了很多服务器,为了节约成本,使用了阿里云/腾讯云的NAT网关,通过几台网关服务器进行NAT出口,通过大量内网服务器进行数据计算,节约公网带宽费用且确保了内网服务器不因公网IP泄露导致被攻击。

    aliyun.png

    (上图来自阿里云)

    但是在用作网关的出口服务器上,需要配置SSL域名证书。如果在网关配置域名证书,各个业务对证书的要求不一样,网关服务器管理员疲于运维。因此,通过TCP反向代理到内网服务器,让内网服务器管理员自行配置SSL证书。

    Nginx TCP反向代理

    使用到了ngx_stream_ssl_preread_module模块。此模块默认没有编译到nginx中。

    编译nginx的时候添加--with-stream_ssl_preread_module配置选项。

    map $ssl_preread_server_name $name {
        backend.example.com      backend;
        default                  backend2;
    }
    
    upstream backend {
        server 192.168.0.1:12345;
        server 192.168.0.2:12345;
    }
    
    upstream backend2 {
        server 192.168.0.3:12345;
        server 192.168.0.4:12345;
    }
    
    server {
        listen      12346;
        proxy_pass  $name;
        ssl_preread on;
    }
    

    除了根据根据服务器名称选择上游外,还可以根据协议、根据SSL协议版本选择上游。具体配置参考:https://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html

    打赏
    交流区

    暂无内容

    尚未登陆
    发布
      上一篇 (Poetry快速安装教程)
    下一篇 (云服务器Linux磁盘扩容)  

    评论回复提醒