下面这个规则,实测成功

将下面代码,加到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及端口号

1 对 “Nginx:端口转发3389远程桌面的几个方法”的想法;

  1. 报错1:tcp模块报错
    ] # /data1/env/nginx/sbin/nginx -t
    nginx: [emerg] “stream” directive is not allowed here in /data1/env/nginx/conf/conf.d/tcp.conf:1

    原因: strem模块不能放在http的模块内部 ,因为不是http协议.

发表评论

您的电子邮箱地址不会被公开。