Eu preciso usar o mapa de redirecionamento com muitas regras (2k + linhas, tamanho do arquivo é ~ 200K)
Eu tenho as seguintes configurações no nginx:
map $uri $new_uri {
include /etc/nginx/conf.d/redirects.map;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
# redirects
if ($new_uri) {
rewrite ^ $new_uri permanent;
}
conforme descrito aqui e encontrado aqui . O problema: configtest falha:
nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 64
Eu tentei aumentar map_hash_max_size e map_hash_bucket_size para valores bem loucos:
map $uri $new_uri {
map_hash_max_size 262144;
map_hash_bucket_size 262144;
include /etc/nginx/conf.d/redirects.map;
}
mas ainda tem o mesmo erro (terminando exatamente com '64'). Selecionei esses valores para que sejam maiores que o tamanho do arquivo. Eu me certifiquei de estar editando a configuração ao vivo adicionando "blabla" e vendo 'diretiva desconhecida'
Então, como esses valores devem ser definidos? Não há muitos detalhes no documento oficial , infelizmente.
map_hash_max_size
emap_hash_bucket_size
deve estar nohttp
contexto, ou seja, fora damap
diretiva.Coloquei no topo do http {} e funcionou. Não coloque fora de http {}
Adicione ao topo do
http
bloco no arquivo de configuração principal (/etc/nginx/nginx.conf
):