nginx中大量端口转发
Posted
技术标签:
【中文标题】nginx中大量端口转发【英文标题】:Large number of Port forwarding in nginx 【发布时间】:2018-08-16 15:46:47 【问题描述】:我正在尝试在 nginx 配置中添加 20K 端口(范围 [40k-60k])的映射。 此配置已添加到 nginx.conf
stream
server
listen 40000;
listen 40001;
.
.
.
listen 60000;
proxy_pass <backend-url>:$server_port;
当映射数量小于 500 时,一切都很好。但是当它增加到 20K 映射时,响应延迟是巨大的。添加端口转发的任何解决方法或任何其他方法?
【问题讨论】:
相关q和a:serverfault.com/q/279262/436331serverfault.com/a/661366/436331 【参考方案1】:从 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
【讨论】:
注意你还应该设置解析器和server_portresolver 127.0.0.1; proxy_pass you_server_ip:$server_port;
【参考方案2】:
我会尝试通过iptables
而不是nginx
来完成它
https://www.cyberciti.biz/faq/linux-port-redirection-with-iptables/
您可以通过将规则插入到 nat 表的 PREROUTING 链。您可以使用设置目标端口 重定向目标
即
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
【讨论】:
以上是关于nginx中大量端口转发的主要内容,如果未能解决你的问题,请参考以下文章