12

同じマシンで実行されているhttpサーバーにhttpsトラフィックをプロキシするようにnginxを構成しました。

httpsポート443から/プロキシでリッスンするようにnginxを構成すると、すべて正常に機能します。しかし、非標準のポートでリッスンしたいのです。非標準ポートを構成すると、nginxはリクエストを受信し、必要に応じてhttpサーバーに送信しますが、サーバーは、https://serverにリダイレクトするように指示するブラウザーへのHTTPリダイレクトで応答しています。 com / someurl "。正しいポートがないことを除いて、リダイレクトURLは見栄えが良いということです。プロキシで設定する必要のある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;
}
4

2 に答える 2

28

問題は次の行から生じています-

proxy_set_header Host $host;

Webサーバー(WEBrick)は、リダイレクト応答を発行するときにこれを含めます。

非標準ポートを含めるように変更できます-

proxy_set_header Host $host:$server_port;

これはこれを解決するはずです。

于 2012-07-14T15:21:59.747 に答える
1

これは、Webサーバー構成ではなく、アップストリームホスト(トラック)で実行されているアプリケーションの問題です(もちろん、アップストリームWebサーバー構成に書き換えルールが含まれている場合を除く)。アプリケーションによって、これらの状況の処理方法が異なります。アプリケーションに到達できる実際のURLを通知する明示的な構成パラメーターが必要なもの、特定のHTTPヘッダーを使用するもの、他のHTTPヘッダーを使用するものがあります。

を質問に追加すると、より知識のある回答が得られる可能性があります。

于 2012-04-16T16:44:32.263 に答える