利用Nginx的反向代理进行端口转发

Nginx是一款非常优秀的web服务器,他提供了非常强大的功能,配置简单,性能强劲等等。
我们在将其用做web服务器的同时,还常常会用到其反向代理的功能,但大多数场景都是基于服务的,即应用层代理
其实他还可以在四层进行转发,即tcp或udp转发,以下是一个简单的示例代码

Nginx模块

  • ngx_stream_ssl_module

配置示例

stream {
  # 不同的域名进来,映射到不同的目标
  map $ssl_preread_server_name $name {
    playnice.eigenmagic.net playnice_backend;
    webification.eigenmagic.net webification_backend;
    project-eschatron.eigenmagic.net eschatron_backend;
  }

  upstream playnice_backend {
    server 10.10.1.11:443;
  }

  upstream webification_backend {
    server 10.10.1.101:8443;
  }

  upstream eschatron_backend {
    server 10.10.1.201:443;
  }

  server {
    listen 443;
    proxy_pass $name;
    proxy_protocol on;
    ssl_preread on;
  }
}

One thought on “利用Nginx的反向代理进行端口转发

  1. Sian Post author

    编译安装所需要的模块:
    ./configure –with-http_stub_status_module –with-http_ssl_module –with-stream –with-stream_ssl_module –with-stream_ssl_preread_module

Leave a Reply