Iptables使用php-fpm对nginx进行规则

时间:2013-02-28 11:51:19

标签: nginx firewall iptables php

我正在运行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

有人可以解释一下:

  1. 为什么nginx使用与标准80和443不同的端口。

  2. 这些额外的端口范围是什么?

  3. 如何正确地允许使用iptables连接到nginx?

  4. 提前致谢!

2 个答案:

答案 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 

防火墙规则的工作原因是:

  1. 打开了Nginx服务器监听器所需的端口(即80和443)

  2. 您已包含以下防火墙规则,该规则允许对localhost(127.0.0.1)的所有请求,因此不会阻止打开高编号端口的Nginx内部重定向:

    iptables -A INPUT -i lo -j ACCEPT

  3. 所以回答你的问题:

    1. Nginx服务器侦听器可以监听您喜欢的任何端口,而不仅仅是80和443.为什么它使用其他端口用于内部重定向,以及实现的这一方面。

    2. 我不相信你能找到这个范围。事实上,我怀疑任何代码都会要求系统使用某个端口,而是要求操作系统提供一个高编号的未使用端口。

    3. 您可能没有意识到这一点,但您实施的防火墙规则应该可以正常工作。

答案 1 :(得分:0)

我也将PHP-FPM与Nginx一起使用。我在iptables中阻止了除22/80/443之外的所有端口,并且没有遇到任何连接问题。我检查了自己的netstat,看起来与你的输出相同。你确定你的iptables规则是正确的吗?你能发布sudo iptables -L

的输出吗?