Dans Nginx, quelle est la différence entre les variables $Host
et $http_Host
.
$Host
est une variable du module Core .
$ Hôte
Cette variable est égale à la ligne Host dans l'en-tête de la demande ou au nom du serveur traitant la demande si l'en-tête Host n'est pas disponible.
Cette variable peut avoir une valeur différente de $ http_Host dans les cas suivants: 1) lorsque l'en-tête d'entrée Host est absent ou a une valeur vide, $ Host est égal à la valeur de la directive server_name; 2) lorsque la valeur de Host contient un numéro de port, $ Host n'inclut pas ce numéro de port. La valeur de $ Host est toujours en minuscule depuis 0.8.17.
$http_Host
est également une variable du même module, mais vous ne le retrouverez pas avec ce nom car il est défini de manière générique comme $http_HEADER
( ref ).
$ http_HEADER
La valeur de l'en-tête de requête HTTP HEADER lors de la conversion en minuscule et avec les "tirets" convertis en "traits de soulignement", par exemple. $ http_user_agent, $ http_referer ...;
Résumant:
$http_Host
est toujours égal à l'en-tête de demande HTTP_Host
.$Host
est égal à $http_Host
, en minuscule et sans le numéro de port (le cas échéant), sauf lorsque HTTP_Host
est absent ou est une valeur vide . Dans ce cas, $Host
est égal à la valeur de la directive server_name
du serveur qui a traité la demande.