nginx中的大量端口转发

时间:2018-03-08 10:14:53

标签: nginx port iptables portforwarding

我试图在nginx配置中为20K端口(范围[40k-60k])添加映射。 此配置已添加到nginx.conf

stream{
    server {
        listen 40000;
        listen 40001;
        .
        .
        .
        listen 60000;
        proxy_pass <backend-url>:$server_port;
     }
}

当映射数量<1时,一切都很好用。 500.但是当它增加到20K映射时,响应的延迟是巨大的。添加端口转发的任何解决方法或任何其他方法?

2 个答案:

答案 0 :(得分:2)

我尝试通过iptables代替nginx

来完成

https://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/

  

您可以通过插入规则轻松重定向传入流量   nat表的PREROUTING链。您可以使用设置目标端口   REDIRECT目标

iptables -t nat -A PREROUTING -p tcp --dport 1:65535 -j REDIRECT --to-ports 10000

并在nginx

中侦听端口10000

相关讨论:https://superuser.com/questions/440324/iptables-how-to-forward-all-external-ports-to-one-local-port

答案 1 :(得分:0)

自Nginx 1.15.10起,您可以在listen指令上指定端口范围。

Port ranges (1.15.10) are specified with the first and last port separated by a hyphen:

listen 127.0.0.1:12345-12399;
listen 12345-12399;

更多信息:http://nginx.org/en/docs/stream/ngx_stream_core_module.html#listen