下面这个规则,实测成功
将下面代码,加到nginx的配置文件中,然后重载nginx的配置即可。
实现用反代机器的1082端口,转发1.2.3.4的3389端口
stream { upstream mstsc { server 1.2.3.4:3389; } server { listen 1082; proxy_pass mstsc; } }
单机转发多个端口(已实测可用)
stream {
server {
listen 1082;
proxy_pass 1.1.1.1:1082;
proxy_buffer_size 512k;
proxy_connect_timeout 30s;
proxy_timeout 30s;
#allow 127.0.0.0/24;
#deny all;
}
server {
listen 1083;
proxy_pass 2.2.2.2:1080;
proxy_buffer_size 512k;
proxy_connect_timeout 30s;
proxy_timeout 30s;
#allow 127.0.0.0/24;
#deny all;
}
}
以1082端口转发远程1.1.1.1的1082端口
以1083端口转发远程的2.2.2.2的1080端口
方法三
加到nginx.conf
stream {
upstream remote {
hash $remote_addr consistent;
server hostname:3389 max_fails=3 fail_timeout=30s;
}
server {
listen 3389;
proxy_connect_timeout 30s;
proxy_timeout 600s;
proxy_pass remote;
}
}
或者按照以下方法:
在nginx.conf
添加如下配置,并使用nginx -s reload
重载nginx使其生效,同时注意防火墙/安全组放行对应的端口
应的端口。
stream {
#将12345端口转发到192.168.1.23的3306端口
server {
listen 12345;
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass 192.168.1.23:3306;
}
#将udp 53端口转发到192.168.1.23 53端口
server {
listen 53 udp reuseport;
proxy_timeout 20s;
proxy_pass 192.168.1.23:53;
}
}
- listen:后面填写源端口(也就是当前服务器端口),默认协议为TCP,可以指定为
- proxy_connect_timeout:连接超时时间
- proxy_timeout:超时时间
- proxy_pass:填写转发目标的IP及端口号