我需要使用具有很多规则的重定向映射(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
指令之外。我把它放在 http {} 的顶部并且它起作用了。不要放在 http {} 之外
http
在主配置文件 ( )的块顶部添加/etc/nginx/nginx.conf
: