Какая разница в $host и $http_host в Nginx

В Nginx, какая разница между переменными $host и $http_host.

Ответ 1

$host является переменной модуля Core.

$хост

Эта переменная равна строке Host в заголовке запроса или имя сервера, обрабатывающего запрос, если заголовок узла не является доступны.

Эта переменная может иметь другое значение от $http_host в таких случаях: 1) когда отсутствует входной заголовок хоста или имеет пустое значение, $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 сервера, обработавшего запрос.