web-dev-qa-db-fra.com

Nginx: impossible de construire map_hash, vous devriez augmenter map_hash_bucket_size: 64

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.

4
Putnik

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;
}
10
Alexey Ten

Ajouter au sommet du bloc http dans le fichier de configuration principal (/etc/nginx/nginx.conf):

map_hash_bucket_size 128;
0
Krauser