Nginx下开启iptables无法访问php页面。[已解决]
本帖最后由 xiaoyang_syl 于 2011-01-13 13:09 编辑
OS:CentOS 5.4
Nginx:8.0.46
PHP:5.2.14
问题:开启iptables时,访问网站的html没问题,但访问phpinfo.php时报"502 Bad Gateway"。 iptables的写法同样在apache里php访问正常。
[root@host php]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.3.5 on Wed Apr 21 02:12:44 2010
*filter
#:INPUT ACCEPT [32541:1426721]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [62546:91794330]
:INPUT DROP
:OUTPUT ACCEPT
:FORWARD DROP
-A INPUT -s 192.168.7.0/255.255.255.0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.4.0/255.255.255.0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i ! lo -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp --dport 9000 -j ACCEPT
#
COMMIT
请知道问题原因的露个面,谢了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
多谢大家的发言。
顶楼上,其实还有个简单的方法就是给iptables的log模块打开,看看拒绝了哪些
php 本地调用走的是 lo
回复 3# xiaoyang_syl
你执行netstat 看一下,nginx到底启用了那些端口,再确定打开指定端口就行了
解决了就好,楼主把标题修改下.
可能是fast-cgi使用的端口不止是9000,所以需要对lo放行.猜测的,没测试过.我的iptables规则lo是ACCEPT的
谢谢法王的回复。
-A INPUT -i lo -j ACCEPT
添加这一句就好了,但不明白为什么。
Nginx调用fastcgi方法如下;
location ~ .*.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
这个问题我觉得与iptables无关,检查下nginx的配置
楼主要是觉得与iptables有关,可以停掉iptables测试