簡體   English   中英

Nginx代理https到非標准端口上的http?

[英]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應用程序,如果您在問題中添加相應的標記,您最終可能會獲得更多知識淵博的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM