【问题标题】:Iptables rules for nginx with php-fpm带有 php-fpm 的 nginx 的 iptables 规则
【发布时间】:2013-02-14 14:26:30
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: nginx firewall iptables php


    【解决方案1】:

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

    【讨论】:

    • 您好!感谢您的回复。规则是绝对正确的。他们已经过双重检查:) 或者你可以发出该命令,你会看到:)
    【解决方案2】:

    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

    所以回答你的问题:

    1. Nginx 服务器侦听器可以侦听您喜欢的任何端口,而不仅仅是 80 和 443。它使用额外端口的原因是用于内部重定向以及实现的一个方面。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2013-09-28
      • 2018-09-04
      • 1970-01-01
      相关资源
      最近更新 更多