Nginx
NGINX proxy_pass 服務索引而不是請求的狀態為 200 的 java-script 文件
我已經設置了一個如下所示的 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腳本文件:
如何解決這個問題?
我不確定如何調試它。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-IP
。X-Forwarded-Proto
在許多情況下,我還建議您也傳遞
X-Forwarded-Port
標頭,以便您的應用程序知道您的訪問者實際連接到哪個前端埠。親切的問候大衛