2013-02-28 129 views
1

我設置iptables規則在nginx和php-fpm運行的服務器上。我已經允許80端口和443端口,但正如我所看到的,還有更高端口被阻塞的附加連接。iptables規則nginx與php-fpm

的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?

在此先感謝!

回答

0

我也使用Nginx的PHP-FPM。我阻止了iptables中除22/80/443之外的所有端口,並且沒有遇到連接問題。我檢查了我自己的netstat,它看起來與你的輸出相同。你確定你的iptables規則是正確的嗎?您能否發佈sudo iptables -L的輸出

+0

您好!感謝您的回覆。規則是絕對正確的。他們有本文doublechecked :)或者你可以發出該命令,你會看到:) – 2013-03-04 18:15:26

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的內部重定向打開嗨GH編號端口沒有被阻塞:

    的iptables -A INPUT -i LO -j ACCEPT

因此,要回答你的問題:

  1. 的Nginx服務器的聽衆可以收聽到任何端口您比如不僅僅是80和443.爲什麼它使用額外的端口是用於內部重定向以及實現的一個方面。

  2. 我不相信你能找到這個範圍。事實上,我懷疑任何代碼都會要求系統使用某個端口,而是要求操作系統提供高編號的未使用端口。

  3. 您可能沒有意識到它,但您實施的防火牆規則應該正常工作。