Vir*_*liu 13 configuration nginx
我有以下虚拟主机
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 个虚拟主机)
Mic*_*ton 11
当出现此错误server_name
是太大,不适合在散列桶。
server_names_hash_bucket_size
根据服务器的 CPU 缓存行大小选择默认值。特别是它意味着尽可能小,以减少 CPU 缓存未命中,因为server_name
必须在每个请求中查找 s。
至于为什么限制为 14 个字符而不是预期的 31 个字符,我怀疑有两种可能性之一:
iconv
方法修复它。默认长度应在启动期间自动确定,取决于使用的服务器名称,但也应在reload
操作期间更新。看看它是否可以在不手动设置存储桶大小但重新启动而不是重新加载的情况下工作。
见http://nginx.org/en/docs/hash.html学习如何散列大小的决定和http://nginx.org/en/docs/http/server_names.html阅读有关用于服务器名称哈希。
归档时间: |
|
查看次数: |
3956 次 |
最近记录: |