2016-05-13 5 views
0

リバースプロキシサーバーは、内部アプリケーションサーバーに要求を転送します。プロキシサーバーのHTTP_HOST値は、サイトにアクセスするために使用されるホスト名に設定されます(例:www.example.comまたはwww.alias2.comまたはwww.alias3.com)。内部アプリケーションサーバーからリバースプロキシのHTTP_HOSTを取得する方法

内部サーバーが内部IPアドレスへの要求を受信するため、HTTP_HOSTの値は192.168.64.2に設定されます。

内部アプリケーションサーバーは、元のhttp要求でHost:に使用されたドメイン名をどのように判断できますか?

SERVER_NAMEをアプリケーションで使用されるホスト名に設定することはできますが、多くの異なるホスト名の別名がウェブサイトにアクセスすると、どのホストが使用されているかわかりますか?アプリケーションサーバ上のApacheで使用可能なすべての環境変数、どれを見てみると

は、(明らかに依拠することはできません)HTTP_REFERER除いて、要求のホスト名を示しています

[HTTP_HOST] => 192.168.64.2:80 
[SERVER_NAME] => 192.168.64.2 
[REMOTE_ADDR] => 192.168.64.1 
[SERVER_ADDR] => 172.19.0.3 
[SCRIPT_URI] => http://192.168.64.2:80/index.php 
[HTTP_REFERER] => http://www.example.com/prev/ 

私はいくつかの逆のproxysができます承知しています元の要求で使用されたホスト名を転送するように構成することができます。私は一般的な言葉で質問しています。なぜなら、プロキシ特有ではない解決策があるかどうかを知りたいからです。現時点では、開発中にBrowserSyncをリバースプロキシとして使用していますが、httpホストを転送する方法はないようですが、いずれにしてもアプリケーションを設計できるようにしたいと思いますこの情報を提供するリバースプロキシに依存しません。

+0

これはどのように機能すると思いますか?あなたが複数のホスト名を扱う場合、リバースプロキシは単純に*どのホストから使用するのかを伝えていないのですが、他にどこから物理的にこの情報を得ることができますか? –

答えて

0

過去に探していたものは、非標準のX-Forwarded-Forヘッダーを設定することで一般的に解決されました。これは、RFC 7239で定義されたForwardedヘッダーに取って代わりました。関連する部分はsection 5.3です。

the de-facto standardとなっていたX-Forwarded-Forは、現在非常に長い時間ツールサポートを受けています。例えば。 nginxのが便利に設定することができ$proxy_add_x_forwarded_forを経由して、それをサポートしています。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

Apacheはmod_proxyを通じて同等の機能を提供しています。これを書いている時点で、an open ticketForwardedのサポートをregarading mod_proxy_httpためにそこにある。

受信側では、X-Forwarded-Forヘッダに応じて種々の環境変数を設定されているApacheのmod_rpafがあります。

Browsersyncについては、proxy.reqHeadersディレクティブで必要なヘッダーを設定できると思います。

関連する問題