一、确认nginx配置是否ok。
二、确认网络是否可达。
三、是否受防火墙安全控制等。
四、排除以上缘由以后,远程实际再测试。linux
那么开始排查:
一、确认nginx配置是否ok。
1.一、检查nginx的配置。
发现有报错,原来有httpd进程(apache),关闭它 nginx
[host]# netstat -lanp|grep 80 2013/11/13 15:35:09 [emerg] 7739#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
1.2本机是否能够访问(公网ip)
apache
[host]# curl http://12x.xx.x.xx/
二、确认网络是否可达浏览器
[host]# telnet 12x.xx.x.xx 80 Trying 12x.xx.x.xx... Connected to 12x.xx.x.xx. Escape character is '^]'.
说明网络上可达,而且TCP三次握手能够完成,由于能telnet通,排除网络不通。
三、是否受防火墙安全控制等。 (我我的遇到的问题是这中状况)
如下4条命令清除iptables的配置,将iptables和selinux关闭安全
iptables -F iptables -F -t nat iptables -X iptables -X -t nat setenforce 0 #关闭selinux
四、远程访问再次确认和推论bash
4.1远程使用浏览器访问,不能访问。。。 4.2服务器日志没有滚动 4.3基于4.1和4.2,结论是请求没有到nginx,可是根据,二、网络是可达的。 彷佛矛盾出来了:网络可达,可是80端口的请求就确实没有到nginx。。实际上,网络的可达,或者说telnet能痛,只说明TCP三次握手是ok的,可是流量器不能访问,说明http数据传输受影响。因此,初步判断,是给服务器以前的“某个网络设备”过滤了。 4.4telnet 以后,直接输入GET /,发现页面能传输回来,可是输入了GET / HTTP/1.1就会被卡死,无任何数据反馈。因而就比较怀疑是服务器以前的“某个网络设备”过滤了(专门过滤http数据)。
五、咱们修改了nginx的监听的端口为8080,发现访问正常了:不管是浏览器仍是telnet以后输入GET / HTTP/1.1都ok服务器