Docker Nginx 502 Bad getway

HsiangSun發表於2020-11-25

502基本上表示nginx無法完成本次轉發 基本上就是下面兩種情況

    1. 後臺服務沒有啟動
    1. nginx配置檔案有誤

好傢伙這不是廢話?

等等別忙走,遇到錯誤不可怕可怕的是不去思考只會去網上看帖子,然後給人家罵一頓 然後並沒有解決問題。

首先來看一下Nginx的配置檔案:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location /api{
        proxy_pass http://127.0.0.1:9501;
        # access_log "logs/test.log";
    }
  
}

上面的配置檔案看上去似乎沒有任何問題。但是卻忽略了一點:我們的Nginx是跑在docker容器中的。我們檢視docker的日誌:

sudo docker logs nginx(你的nginx容器name)

日誌的部分內容:

在這裡插入圖片描述
很快啊 我啪地一下就醒悟了。我們的nginx無法與我們的應用程式通訊。

在這裡插入圖片描述docker 的網段 是以172.xxx.xxx.xxx

所以nginx的轉發應該寫成:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
	    if (!-e $request_filename) {
             proxy_pass http://172.17.0.1:9501;
        }
        if (!-f $request_filename) {
             proxy_pass http://172.17.0.1:9501;
        }
    }
}

終於可以睡覺了 good night ~

相關文章