1. 程式人生 > >nginx公網IP無法訪問瀏覽器

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 '^]'.

這樣就說明網路上可達,並且TCP三次握手可以完成,因為能telnet通,排除了網路不通的情況
但是我本地的網路不通。

3、是否受防火牆安全控制等。

將iptables和selinux關閉
以下4條命令清除iptables的配置

iptables -F
iptables -F -t nat
iptables -X
iptables -X -t nat

setenforce 0 #關閉selinux
重新遠端訪問,還是失敗。說明不是防火牆的原因。這裡因為我是debian,所以預設是沒有開啟防火牆的,所以不是這個原因。

4、去/var/log/nginx/error.log檢視錯誤日誌

日誌報錯:Address already in use
這裡就已經確認錯誤在哪了,原來是80埠被佔用的問題。

5、解決方案

1)執行:lsof -i:80 檢視此時哪個程序正在使用80埠
我這邊發現是阿里雲盾正在使用80埠

6、好吧,驚奇的發現,通過瀏覽器還是訪問不了nginx,但是此刻我的80埠已經被nginx監聽了。繼續檢視錯誤日誌。錯誤日誌並沒重新整理。

7、百度發現有人說是iptables防火牆的原因,但是debian系統的安裝預設是沒有iptables,所以應該不是防火牆的原因。

8、看到有人說,是沒有備案域名的原因,80埠預設是關閉狀態。好吧,我準備改成8080埠,看看能不能行吧。(這個沒來得及試)

二、真正的凶手

      終於找到問題了,眼淚差點掉下來。原來是阿里雲的問題。我剛開通的伺服器,沒有設定安全組規則。下面給大家演示一下安全組怎麼設定。
1、進入雲服務控制檯

2、找到安全組,點選進入
這裡寫圖片描述
3、在預設的一個安全組上,有一個配置規則按鈕。點選配置規則
這裡寫圖片描述
4、這是我原來的安全組規則,沒有http的

這裡寫圖片描述

5、按照如圖所示新增

這裡寫圖片描述

6、瀏覽器訪問ip成功
這裡寫圖片描述

配置好安全規則之後,我們就能在瀏覽器通過ip訪問了。。千想萬想,沒想到會收到來自阿里雲的GANK,很絕望。。不過在查錯過程中也學到了很多,記錄一下。

end