Nginx

NGINX proxy_pass 服務索引而不是請求的狀態為 200 的 java-script 文件

  • May 3, 2021

我已經設置了一個如下所示的 proxy_pass:

location /review/app-template/16-update-to-proxy_pass/ {
       proxy_pass http://$server_name:54341/review/app-template/16-update-to-proxy_pass/;

       # proxy_set_header Host $host;
       # proxy_redirect http://$server_name:54341/review/app-template/16-update-to-proxy_pass/ /review/app-template/16-update-to-proxy_pass/;

       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Proto $scheme;
}

註釋掉的程式碼是一種調試嘗試 - 但註釋掉對此沒有明顯影響(我用過nginx -s reload

在埠 54341 下找到的 dash 應用程序執行良好:

在此處輸入圖像描述

但是,如果我通過 nginx 打開應用程序,它就會損壞:

在此處輸入圖像描述

什麼壞了?

所以看起來java腳本文件有問題所以這裡是這些java腳本文件的並排。損壞的版本似乎返回了索引文件:

呈現索引

而工作版本實際上返回一個java腳本文件:

java腳本源碼

如何解決這個問題?

我不確定如何調試它。Curl 做同樣的事情,狀態碼是 200,好像什麼都沒有錯。Nginx 似乎很樂意以與請求的文件相同的名稱提供錯誤的文件(索引 html)。所以沒有錯誤日誌……我完全被卡住了。

如果有更多資訊會有所幫助,我很樂意添加更多資訊。但就目前而言,這似乎是需要的東西。

當您將所有請求未經修改地傳遞到您的儀表板應用程序後端時,請嘗試proxy_pass不使用 URI。

例如,嘗試以下操作:

location /review/app-template/16-update-to-proxy_pass/ {
       proxy_pass http://$server_name:54341;

       # proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Port $server_port;
}

很高興看到你路過X-Forwarded-For,,,X-Real-IPX-Forwarded-Proto

在許多情況下,我還建議您也傳遞X-Forwarded-Port標頭,以便您的應用程序知道您的訪問者實際連接到哪個前端埠。

親切的問候大衛

引用自:https://serverfault.com/questions/1062373