В Nginx, какая разница между переменными $host и $http_host.
Какая разница в $host и $http_host в Nginx
Ответ 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сервера, обработавшего запрос.