回答:
$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のがある場合、最初ののみが表示されます。