Nginx 404 排查過程

某天突然訪問自己的測試域名,然後 404 了,然後就像無頭蒼蠅一樣,四處嘗試,看 nginx 的配置,折騰一番,無果。最後在同事的幫助下,找到了一些端倪。雖然這幾個步驟很簡單,但卻是整個解決問題的思路。

1、看 nginx 請求的 access.log

查看 nginx 配置的日誌,確認請求已經到達了 nginx。
nginx 日誌配置指令:

access_log /data/logs/nginx/api.access.log;
error_log  /data/logs/nginx/api.error.log;

2、檢查域名指定的 upstream 訪問的 server 端口號是否正確

upstream my_service {
    # 192.168.1.10 Nginx 服務器,8899 是 Nginx 監聽的端口號
    server 192.168.1.10:8899 weight=1;
}

我的域名的 upstream 配置的是一臺 Nginx 服務器,請求都打到那臺 Nginx 服務器上,然後轉發到後端 server。有一天我訪問的時候突然就出現 404 了,我看 Nginx 服務器也是啓動得好好的,後端服務也是正常啓動的。
然後我在 Nginx服務器 上查看它監聽的端口號: netstat -anp | grep nginx
在這裏插入圖片描述
發現我域名配置的 upstream 的 server 端口號「8899」在上面這個圖中沒有,有可能是誰動了我的配置文件,最後改了域名指向的 upstream 的 server 端口號,然後 404 就消失了。

3、檢查後端服務是否可達

如果已經請求到 nginx,那就看是否請求到了後端服務,
先確認後端服務是否啓動起來,這個看後端日誌應該能發現點什麼,並通過 curl 127.0.0.1:8080是看是否能訪問到你的服務。

每個人遇到的這個問題的原因可能不是相同的,但只要心中有一個大致的解決問題的思路方向,就不會深陷其中而無法看清問題的本質。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章