nginx公網IP無法訪問瀏覽器(轉)
一、開始找原因
在瀏覽器輸入:http://ip,正常的話,會有頁面,welcome to nginx
我這里是瀏覽器訪問失敗,
查找原因:
1、在服務器上訪問Ip
執行:curl http://ip
結果:超時,未連接成功
查看nginxaccess.log日志,發現日志未滾動,代表本機訪問不到公網ip
2、確認網絡是否可達
telnet 12x.xx.x.xx 80 Trying 12x.xx.x.xx... Connected to 12x.xx.x.xx. Escape character is '^]'.
- 1
- 2
- 3
- 4
這樣就說明網絡上可達,並且TCP三次握手可以完成,因為能telnet通,排除了網絡不通的情況
但是我本地的網絡不通。
3、是否受防火牆安全控制等。
將iptables和selinux關閉
以下4條命令清除iptables的配置
iptables -F iptables -F -t nat iptables -X iptables -X -t nat
- 1
- 2
- 3
- 4
setenforce 0 #關閉selinux
重新遠程訪問,還是失敗。說明不是防火牆的原因。這里因為我是debian,所以默認是沒有開啟防火牆的,所以不是這個原因。
4、去/var/log/nginx/error.log查看錯誤日志
日志報錯:Address already in use
這里就已經確認錯誤在哪了,原來是80端口被占用的問題。
5、解決方案
1)執行:lsof -i:80 查看此時哪個進程正在使用80端口
我這邊發現是阿里雲盾正在使用80端口
2)殺掉雲盾進程,重啟nginx試試
kill -s 9 pid
具體參考博客:http://blog.csdn.net/ljfphp/article/details/78666376
6、好吧,驚奇的發現,通過瀏覽器還是訪問不了nginx,但是此刻我的80端口已經被nginx監聽了。繼續查看錯誤日志。錯誤日志並沒刷新。
7、百度發現有人說是iptables防火牆的原因,但是debian系統的安裝默認是沒有iptables,所以應該不是防火牆的原因。
8、看到有人說,是沒有備案域名的原因,80端口默認是關閉狀態。好吧,我准備改成8080端口,看看能不能行吧。(這個沒來得及試)
二、真正的凶手
終於找到問題了,眼淚差點掉下來。原來是阿里雲的問題。我剛開通的服務器,沒有設置安全組規則。下面給大家演示一下安全組怎么設置。
1、進入雲服務控制台
2、找到安全組,點擊進入
3、在默認的一個安全組上,有一個配置規則按鈕。點擊配置規則
4、這是我原來的安全組規則,沒有http的
5、按照如圖所示添加
6、瀏覽器訪問ip成功
配置好安全規則之后,我們就能在瀏覽器通過ip訪問了。。千想萬想,沒想到會收到來自阿里雲的GANK,很絕望。。不過在查錯過程中也學到了很多,記錄一下。
end