轶哥

妄图改变世界的全栈程序员。

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

使用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磁盘扩容)  

评论回复提醒