Quelle est la différence de $host et $http host dans Nginx

Dans Nginx, quelle est la différence entre les variables $host et $http_host.

99
demandé sur glarrain 2013-03-14 20:25:54

1 réponses

$host est une variable de la Base module.

$ host

Cette variable est égale à Line Host dans l'en-tête de request ou nom du serveur traitant la requête si l'en-tête Host N'est pas disponible.

Cette variable peut avoir une valeur différente de $http_host cas: 1) lorsque L'en-tête D'entrée de L'hôte est absent ou a une valeur vide, $ host est égal à la valeur de la directive server_name; 2) lorsque la valeur de l'Hôte contient numéro de port, $host n'inclut pas ce numéro de port. la valeur de $host est toujours en minuscules depuis 0.8.17.

$http_host est aussi une variable du même module mais vous ne la trouverez pas avec ce nom car elle est définie génériquement comme $http_HEADER (réf ).

$ http_HEADER

La valeur de L'en-tête D'en-tête de requête HTTP lorsqu'il est converti en minuscules et avec 'tirets' convertis en 'underscores', par exemple $http_user_agent, $ http_referer...;


Résumé:

  • $http_host est toujours égal à l'en-tête de requête HTTP_HOST.
  • $host est égal à $http_host, les minuscules et sans le numéro de port (si présent), , 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 requête.
160
répondu glarrain 2013-03-14 16:25:54