Cuál es la diferencia de $ host y $ http_host en Nginx

En Nginx, ¿cuál es la diferencia entre las variables $host y $http_host .

$host es una variable del módulo Core .

$ host

Esta variable es igual a Host de línea en el encabezado de solicitud o nombre del servidor que procesa la solicitud si el encabezado de Host no está disponible.

Esta variable puede tener un valor diferente de $ http_host en tales casos: 1) cuando el encabezado de entrada del Host está ausente o tiene un valor vacío, $ host es igual al valor de la directiva server_name; 2) cuando el valor de Host contiene el número de puerto, $ host no incluye ese número de puerto. El valor $ host siempre está en minúscula desde 0.8.17.

$http_host también es una variable del mismo módulo pero no lo encontrará con ese nombre porque se define genéricamente como $http_HEADER ( ref ).

$ http_HEADER

El valor del encabezado de solicitud HTTP HEADER cuando se convierte a minúsculas y con ‘guiones’ convertidos a ‘guiones bajos’, por ejemplo, $ http_user_agent, $ http_referer …;


Resumiendo:

  • $http_host es igual a siempre el HTTP_HOST solicitud HTTP_HOST .
  • $host es igual a $http_host , minúscula y sin el número de puerto (si está presente), excepto cuando HTTP_HOST está ausente o es un valor vacío . En ese caso, $host es igual al valor de la directiva server_name del servidor que procesó la solicitud.