J'ai besoin d'utiliser une carte de redirection avec des règles assez nombreuses (lignes 2K +, la taille du fichier est ~ 200k)
J'ai les paramètres suivants dans 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;
}
comme décrit ici et trouvé ici . Le problème: configtest échoue:
nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 64
J'ai essayé d'augmenter map_hash_max_size et map_hash_bucket_size sur des valeurs assez folles:
map $uri $new_uri {
map_hash_max_size 262144;
map_hash_bucket_size 262144;
include /etc/nginx/conf.d/redirects.map;
}
mais a toujours la même erreur (finissant exactement avec '64'). J'ai sélectionné ces valeurs afin qu'elles soient plus grandes que la taille du fichier. Je me suis assuré que j'habite en direct config en ajoutant "blabla" et voir "Directive inconnue"
Alors, comment ces valeurs doivent être définies? Il n'y a pas beaucoup de détails dans le document officiel , malheureusement.
map_hash_max_size
et map_hash_bucket_size
Doit être dans http
contexte, c'est-à-dire en dehors de la directive map
.
map_hash_max_size 262144;
map_hash_bucket_size 262144;
map $uri $new_uri {
include /etc/nginx/conf.d/redirects.map;
}
Ajouter au sommet du bloc http
dans le fichier de configuration principal (/etc/nginx/nginx.conf
):
map_hash_bucket_size 128;