在 1.9.13 版本后,Nginx 已经支持端口转发,编译的时候需要 stream 这个模块支持,同时支持 TCP/UDP 端口转发。
使用环境
- Ubuntu 20.04 LTS
- Nginx: 1.20.1
查看nginx是否支持stream模块
nginx -V |grep with-stream
出现 --with-stream字样,说明nginx支持stream。
配置Nginx
在nginx配置 nginx.conf 文件中新增以下stream配置 要求与http{}同级
stream {
##多端口转发 ssh
upstream run_ssh{
server 8.8.8.8:8888; ##转发的目的地址和端口
}
server {
listen 800 ssl; ##监听端口
proxy_pass run_ssh; #转发请求
ssl_certificate /www/server/panel/vhost/cert/fullchain.pem; ##证书文件
ssl_certificate_key /www/server/panel/vhost/cert/privkey.pem; ##证书文件
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
}
##多端口转发 tcp
upstream run_tcp {
server 8.8.8.8:111;
}
server {
listen 80; ##监听端口
proxy_pass run_tcp; #转发请求
}
}
ssl:将 localhost:800端口转发到 8.8.8.8:8888
tpc:将 localhost:80端口转发到 8.8.8.8:111