90
Nginxでは、変数$host
と$http_host
の違いは何ですか?
Nginxでは、変数$host
と$http_host
の違いは何ですか?
$host
は、Coreモジュールの変数です。
$ホスト
この変数は、ホストヘッダが使用可能 ない場合、要求またはリクエストを処理するサーバの 名前のヘッダでホストを行に等しいです。
この変数は、 の場合、$ http_hostと異なる値を持つことがあります。1)ホスト入力ヘッダーが存在しないか空の値を持つ場合、 $ hostはserver_nameディレクティブの値と同じです。 2)Hostの値 にポート番号が含まれている場合、$ hostにはそのポート番号は含まれません。 $ホストの値は0.8.17から常に小文字です。
$http_host
も同じモジュールの変数ですが、それは$http_HEADER
(ref)として一般的に定義されているので、あなたはその名前でそれを見つけることができません。
$ HTTP_HEADER
HTTPリクエストヘッダヘッダの値小文字に変換され、「ダッシュ」は、例えば、「下線」に変換すると$ http_user_agent、$ http_referer ...;
要約:
$http_host
が常にHTTP_HOST
リクエストヘッダに等しいです。$host
は$http_host
、小文字に等しく、ポート番号(存在する場合)なしに、HTTP_HOST
が存在しないか、または空の値である場合を除い。この場合、$host
は、リクエストを処理したサーバのserver_name
ディレクティブの値と同じです。
$ hostは、具体的には、現在のサーバーブロックで定義されている最初の 'server_name' **です。複数の 'server_name'がある場合は、最初のものだけが表示されます。 –
真。実際には、以下のように定義するのが一般的です。server_name example.com www.example.com; – glarrain
複数の 'server_name'ディレクティブを使用することもできます。あなたが最初に正規表現を持ってしまった場合、それは '$ホスト 'になり、書き換えルール中にあらゆる種類の醜いものが発生する可能性があります。 –