Nginx
Nginx:無法建構map_hash,你應該增加map_hash_bucket_size:64
我需要使用具有很多規則的重定向映射(2k+ 行,文件大小約為 200K)
我在 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; }
如此處所述並在此處找到。問題: configtest 失敗:
nginx: [emerg] could not build map_hash, you should increase map_hash_bucket_size: 64
我試圖將 map_hash_max_size 和 map_hash_bucket_size 增加到相當瘋狂的值:
map $uri $new_uri { map_hash_max_size 262144; map_hash_bucket_size 262144; include /etc/nginx/conf.d/redirects.map; }
但仍然有相同的錯誤(完全以'64’結尾)。我選擇了這些值,因此它們大於文件大小。我確保通過添加“blabla”來編輯實時配置並查看“未知指令”
那麼,應該如何設置這些值呢?不幸的是,官方文件中沒有太多細節。
map_hash_max_size
並且map_hash_bucket_size
必須在http
上下文中,即在map
指令之外。map_hash_max_size 262144; map_hash_bucket_size 262144; map $uri $new_uri { include /etc/nginx/conf.d/redirects.map; }
我把它放在 http {} 的頂部並且它起作用了。不要放在 http {} 之外