Respostas:
$hosté uma variável do módulo Core .
$ host
Essa variável é igual à linha Host no cabeçalho da solicitação ou no nome do servidor que está processando a solicitação, se o cabeçalho do Host não estiver disponível.
Essa variável pode ter um valor diferente de $ http_host nesses casos: 1) quando o cabeçalho de entrada Host estiver ausente ou tiver um valor vazio, $ host será igual ao valor da diretiva server_name; 2) quando o valor de Host contém o número da porta, $ host não inclui esse número da porta. O valor do $ host é sempre minúsculo desde 0.8.17.
$http_hosttambém é uma variável do mesmo módulo, mas você não o encontrará com esse nome porque ele é definido genericamente como $http_HEADER( ref ).
$ http_HEADER
O valor do cabeçalho da solicitação HTTP HEADER quando convertido em minúsculas e com 'traços' convertidos em 'sublinhados', por exemplo, $ http_user_agent, $ http_referer ...;
Resumindo:
$http_hosté sempre igual ao HTTP_HOSTcabeçalho da solicitação.$hosté igual a $http_host, minúscula e sem o número da porta (se presente), exceto quando HTTP_HOSTestá ausente ou é um valor vazio . Nesse caso, $hosté igual ao valor da server_namediretiva do servidor que processou a solicitação.server_namediretivas. se você tiver uma regex no primeiro, isso se torna o $host, e todo tipo de coisa feia pode acontecer durante as regras de reescrita.
$server_namevariável é igual ao server_namevalor da diretiva ou ao nome real do servidor que foi selecionado se houver várias server_namediretivas?
$server_nameé sempre igual ao primeiro valor especificado com a diretiva server_name. Por exemplo, com server_name example.com one.example.com two.example.com;, $server_namesempre será "exemplo.com", independentemente de qual host o usuário especificou . De fato, se você não tiver um default_server, o host pode ser algo completamente diferente (como exemplo.org).
server_namedefinido no bloco do servidor atual. se você tiver váriosserver_names, apenas o primeiro aparecerá.