回答:
いくつかのことに役立ちます。そのうちの1つは、プロキシでURLを生成するためです。nginx
実際のHTTPサーバーがポート7790で実行されている間に、ポート80で負荷分散プロキシとして構成した可能性があります。Webサーバーがそれ自体に戻る絶対URLを作成する必要がある場合、それは内部ネットワーク情報を与えるだけです。HTTPヘッダーを調べて、実際のクライアントとは何か、URLを生成するためにサーバーにアクセスする方法を知る必要があります。
http://ex.com:8080
、その接続は(3つのWebサーバ上でロードバランスされているint.ex.com:7001
、int.ex.com:7002
とint.ex.com:7003
)、その後、Webサーバはできません、それは正しくありませんので、ポートを見つけるために、トランスポート層を見てください。PHPスクリプトがページにリンクを書きたい場合、単に使用することはできませんhttp://int.ex.com:7001/somelink
。これHost
を行うには、フィールドを使用する必要があります。これにより、クライアントがクリックすると、正しいURLに移動します。
ex.com:80
)への接続がありますがex.com:7001
、クライアントからへの直接接続はありませんex.com:7001
。また、ほとんどの場合、Webページは相対ハイパーリンクを使用するため、ホスト/ポートを知ることは一般的な問題ではありませんが、潜在的には可能性があります。より一般的なシナリオは、ロードバランサーまたはプロキシにX-HTTPS
ヘッダーを設定させ、クライアントがhttpsで接続したかどうかを示すことです。同じ概念-Webサーバーは実際のクライアント接続を認識しないため、プロキシまたはロードバランサーは、HTTPヘッダーにすべての情報が含まれていることを確認する必要があります。
If the web server needs to create an absolute URL back to itself, it can't use the transport layer information, because that'll just give it the internal network info. It needs to look at the HTTP headers to know what the real client is and how they are accessing the server to generate the URLs.
。もっと明確にできますか?ありがとう