一、確認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服務器