回答:
$host
コアモジュールの変数です。
$ host
この変数は、リクエストのヘッダーのホスト行、またはホストヘッダーが使用できない場合はリクエストを処理するサーバーの名前と同じです。
この変数は、このような場合、$ http_hostとは異なる値を持つ可能性があります。1)Host入力ヘッダーが存在しないか空の場合、$ hostはserver_nameディレクティブの値と同じです。2)Hostの値にポート番号が含まれている場合、$ hostにはそのポート番号は含まれません。$ hostの値は0.8.17以降常に小文字です。
$http_host
も同じモジュールの変数ですが、一般的に$http_HEADER
(refとして定義されているため、その名前では見つかりません)。
$ http_HEADER
小文字に変換され、「ダッシュ」が「アンダースコア」に変換されたときのHTTPリクエストヘッダーHEADERの値。例:$ http_user_agent、$ http_referer ...;
要約:
$http_host
常にHTTP_HOST
要求ヘッダーと同じです。$host
等しい$http_host
、小文字、ポート番号なし(存在する場合)。ただし、HTTP_HOST
がない場合や空の値の場合は除きます。その場合、リクエストを処理したサーバー$host
のserver_name
ディレクティブの値と同じです。server_name
ディレクティブを持つこともできます。最初の正規表現に正規表現があると、それがになり、$host
書き換えルールの実行中にあらゆる種類の醜いことが起こります。
$server_name
変数が等しくserver_name
ディレクティブの値または複数あった場合、選択された実際のサーバー名server_name
ディレクティブは?
$server_name
は常に、server_nameディレクティブで指定された最初の値と等しくなります。たとえば、with server_name example.com one.example.com two.example.com;
は、ユーザーが指定したホスト$server_name
に関係なく、常に「example.com」になります。実際、がない場合default_server
、ホストは完全に異なるものになる可能性があります(example.orgなど)。
server_name
、現在のサーバーブロックで定義されている最初のホストです。複数server_name
のがある場合、最初ののみが表示されます。