2012-04-16 8 views
10

私は、同じマシン上で実行されているhttpサーバにhttpsトラフィックをプロキシするようにnginxを設定しました。非標準ポートでNginxプロキシhttpsをhttpにするには?

httpsポート443から/ proxyをリッスンするようにnginxを設定すると、すべてうまく動作します。しかし、私は本当に非標準ポートでリッスンしたいと思います。非標準ポートを設定すると、nginxは要求を受け取り、HTTPサーバーに送信しますが、サーバーはHTTPリダイレクトで応答して、ブラウザに「https:// server」にリダイレクトするように指示します。私はプロキシで設定する必要があるHTTPヘッダーがないのですか?

具体的には、私はトラックの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; 
} 

答えて

1

のTh。アップストリームのWebサーバー構成に書き換えルールが含まれていない限り、アップストリームホスト(トラック)で実行されているアプリケーションの問題であり、Webサーバーの構成ではありません。異なるアプリケーションでは、これらの状況を別々に処理します。明示的な構成パラメータを必要とするものもあれば、アプリケーションに到達できる実際のURL、特定のHTTPヘッダーを使用するもの、その他のHTTPヘッダーを使用するものなどがあります。

TracksはRailsアプリケーションであるため、質問に対応するタグを追加すると、知識の豊富な回答が得られる可能性があります。

+0

ありがとうございました。私はHTTP X-Forwarded-Portヘッダーを設定することを提案しているフォーラム投稿をいくつか見つけましたが、それは非標準の非標準ヘッダーのように見えます。私は運がないnginx設定でそれを設定しようとしました。とにかく、上流のホストで実行されているアプリケーションは、そのようなことを認識して行動する必要があると思います。 – kenen

24

問題はラインから茎 - リダイレクト応答を発行する際に順番に

proxy_set_header Host $host; 

あなたのWebサーバ(WEBrickには)これを含めています。

あなたは非標準ポートを含めるようにそれを変更することができます - これを解決する必要があります

proxy_set_header Host $host:$server_port; 

+0

非常に良い。これは、nginxのリバースプロキシの背後にある適切なURLを生成しようとしているフラスコアプリケーションで私の問題を解決した。 [フレンチスニペット35](http://flask.pocoo.org/snippets/35/)に記載されているように、そのスニペットに触れる必要はありません。 –

関連する問題