我正在运行nginx和php-fpm的服务器上设置iptables规则。我已经允许80和443端口,但正如我所看到的那样,还有更多端口被阻塞的附加连接。
的示例输出
netstat -anpn | grep -v“:80”
tcp 0 1 10.0.0.1:8109 10.1.2.24:29837 SYN_SENT 19834/nginx: worker
tcp 0 1 10.2.3.45:31890 10.0.0.1:26701 SYN_SENT 17831/nginx: worker
10.0.0.1是服务器IP,其他是客户端。
我的iptables规则:
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
有人可以解释一下:
为什么nginx使用与标准80和443不同的端口。
这些额外的端口范围是什么?
如何正确地允许使用iptables连接到nginx?
提前致谢!
答案 0 :(得分:4)
Nginx通常会在处理请求时执行内部重定向,这将在高编号端口上建立连接。我不相信你能找到这个范围。
以下是我看到的例子:
tcp 0 0 192.168.0.126:80 0.0.0.0:* LISTEN 9432/nginx: worker
tcp 0 0 192.168.0.126:80 192.168.0.177:62950 ESTABLISHED 9432/nginx: worker
tcp 0 0 192.168.0.126:80 192.168.0.177:62949 ESTABLISHED 9432/nginx: worker
tcp 0 0 192.168.0.126:80 192.168.0.177:62947 ESTABLISHED 9432/nginx: worker
unix 3 [ ] STREAM CONNECTED 29213 9432/nginx: worker
防火墙规则的工作原因是:
打开了Nginx服务器监听器所需的端口(即80和443)
您已包含以下防火墙规则,该规则允许对localhost(127.0.0.1)的所有请求,因此不会阻止打开高编号端口的Nginx内部重定向:
iptables -A INPUT -i lo -j ACCEPT
所以回答你的问题:
Nginx服务器侦听器可以监听您喜欢的任何端口,而不仅仅是80和443.为什么它使用其他端口用于内部重定向,以及实现的这一方面。
我不相信你能找到这个范围。事实上,我怀疑任何代码都会要求系统使用某个端口,而是要求操作系统提供一个高编号的未使用端口。
您可能没有意识到这一点,但您实施的防火墙规则应该可以正常工作。
答案 1 :(得分:0)
我也将PHP-FPM与Nginx一起使用。我在iptables中阻止了除22/80/443之外的所有端口,并且没有遇到任何连接问题。我检查了自己的netstat,看起来与你的输出相同。你确定你的iptables规则是正确的吗?你能发布sudo iptables -L