En Nginx, ¿cuál es la diferencia entre variables $hosty $http_host.
fuente
En Nginx, ¿cuál es la diferencia entre variables $hosty $http_host.
$hostes una variable del módulo Core .
$ host
Esta variable es igual a la línea Host en el encabezado de la solicitud o el nombre del servidor que procesa la solicitud si el encabezado 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 de $ host siempre está en minúscula desde 0.8.17.
$http_hosttambién es una variable del mismo módulo, pero no la 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_hostsiempre es igual al HTTP_HOSTencabezado de la solicitud.$hostigual $http_host, en minúscula y sin el número de puerto (si está presente), excepto cuando HTTP_HOSTestá ausente o es un valor vacío . En ese caso, $hostes igual al valor de la server_namedirectiva del servidor que procesó la solicitud.
server_nameque se define en el bloque del servidor actual. Si tiene varios correosserver_nameelectrónicos, solo aparecerá el primero.server_namedirectivas también. Si tiene una expresión regular en la primera, eso se convierte en$host, y todo tipo de cosas feas pueden suceder durante las reglas de reescritura.$server_namevariable es igual alserver_namevalor de la directiva o al nombre real del servidor que se seleccionó si hubiera variasserver_namedirectivas?$server_namesiempre es igual al primer valor especificado con la directiva server_name. Por ejemplo, conserver_name example.com one.example.com two.example.com;,$server_namesiempre será "example.com", independientemente de qué host haya especificado el usuario . De hecho, si no tiene undefault_server, el host podría ser algo completamente diferente (como example.org).