Eu tenho o seguinte host virtual
server
{
server_name abc.example.com;
root /var/www/test/;
index index.html;
}
Ao executar nginx -s reload
, recebo o seguinte erro:
nginx: [emerg] não pôde criar o server_names_hash, você deve aumentar server_names_hash_bucket_size: 32
O mesmo acontece com qualquer nome_do_servidor que possui 15 ou mais caracteres.
Se eu definir o server_name como ab.example.com
(ou qualquer nome com menos de 15 caracteres), o problema deixará de se manifestar.
Para corrigir isso, adicionei o seguinte a /etc/nginx/nginx.conf
(não estava definido antes):
server_names_hash_bucket_size 64;
Configurá-lo para 33 também funcionou, mas não para 32.
Por que o comprimento máximo padrão de 14 caracteres para server_name?
Esse limite é imposto pelas configurações padrão do nginx ou pelo sistema em que ele é executado?
Como um server_name de 15 afeta o tamanho máximo do bucket de hash? (existem apenas 4 hosts virtuais definidos no sistema)
fonte
grep "" /sys/devices/system/cpu/cpu?/cache/index?/coherency_line_size
?/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size:64
/sys/devices/system/cpu/cpu0/cache/index1/coherency_line_size:64
/sys/devices/system/cpu/cpu0/cache/index2/coherency_line_size:64
Respostas:
Este erro ocorre quando o tamanho
server_name
é muito grande para caber no hash bucket .O padrão para
server_names_hash_bucket_size
é escolhido dependendo do tamanho da linha de cache da CPU do servidor. Em particular, ele deve ser o menor possível, para reduzir as falhas no cache da CPU , poisserver_name
é necessário procurar s em todas as solicitações.Quanto ao motivo de você estar limitado a 14 caracteres em vez dos 31 esperados, suspeito de uma das duas possibilidades:
iconv
para corrigi-lo.fonte
O comprimento padrão deve ser determinado automaticamente durante o início, dependendo dos nomes dos servidores usados, mas isso também deve ser atualizado durante uma
reload
operação. Veja se funciona sem definir manualmente o tamanho do balde, mas reiniciando em vez de recarregar.Consulte http://nginx.org/en/docs/hash.html para saber como os tamanhos de hash são determinados e http://nginx.org/en/docs/http/server_names.html para ler sobre os hashes usados para nomes de servidores.
fonte