[英]Nginx proxy https to http on non standard port?
我已將nginx配置為將https流量代理到在同一台計算機上運行的http服務器。
當我將nginx配置為從https端口443偵聽/ proxy時,一切正常。但我真的想聽非標准端口。 當我配置非標准端口時,nginx接收請求並將其發送到我的http服務器,但是服務器正在響應HTTP重定向回瀏覽器,告訴它重定向到'https:// server。 com / someurl“。我的意思是重定向網址看起來很好,除了它缺少正確的端口。我是否缺少我需要在代理中設置的HTTP標頭?
具體來說,我正在運行Tracks的http實例; http://getontracks.org 。 如果重要的話。
我(在標准端口上工作)nginx服務器配置:
location /{
proxy_pass http://localhost:50000;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
}
問題源於這條線 -
proxy_set_header Host $host;
在發出重定向響應時,您的Web服務器(WEBrick)將包括此內容。
您可以將其更改為包含非標准端口 -
proxy_set_header Host $host:$server_port;
這應該解決這個問題。
這更像是在上游主機(Tracks)上運行的應用程序的問題,而不是Web服務器配置的問題(當然,除非您的上游Web服務器配置包含重寫規則)。 不同的應用程序以不同的方式處理這些情況:一些需要顯式配置參數,告訴他們可以訪問應用程序的實際URL,一些使用某些HTTP頭,一些使用其他HTTP頭。
由於Tracks是一個Rails應用程序,如果您在問題中添加相應的ruby-on-rails標記,您最終可能會獲得更多知識淵博的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.