我有以下虚拟主机
server
{
server_name abc.example.com;
root /var/www/test/;
index index.html;
}
Run Code Online (Sandbox Code Playgroud)
运行时nginx -s reload
出现以下错误:
nginx: [emerg] 无法构建 server_names_hash,你应该增加 server_names_hash_bucket_size: 32
任何具有 15 个或更多字符的 server_name 都会发生同样的情况。
如果我将 server_name 设置为ab.example.com
(或 15 个字符以下的任何名称),问题将停止显现。
为了解决这个问题,我添加了以下内容/etc/nginx/nginx.conf
(之前没有定义):
server_names_hash_bucket_size 64;
Run Code Online (Sandbox Code Playgroud)
将其设置为 33 也可以,但不是 32。
为什么 server_name 的默认最大长度为 14 个字符?
这个限制是由 nginx 的默认设置还是由它运行的系统强加的?
server_name 为 15 如何影响最大哈希桶大小?(系统上只定义了 4 个虚拟主机)