web-dev-qa-db-fra.com

Quelle est la différence entre $ Host et $ http_Host dans Nginx

Dans Nginx, quelle est la différence entre les variables $Host et $http_Host.

130
glarrain

$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.
184
glarrain