哈希表大小

http {
    server_names_hash_bucket_size 64;
}

哈希表大小说明

  • server_names_hash_bucket_size 64:设置服务器名称哈希桶的大小为 64 字节

哈希表大小原理: 服务器名称哈希表用于快速查找服务器名称,哈希桶的大小会影响哈希表的性能。哈希桶越大,哈希冲突越少,查找速度越快,但占用内存越多。

哈希表最大大小

http {
    server_names_hash_max_size 1024;
}

哈希表最大大小说明

  • server_names_hash_max_size 1024:设置服务器名称哈希表的最大大小为 1024 字节

哈希表最大大小原理: 服务器名称哈希表的最大大小会影响哈希表的性能。哈希表越大,查找速度越快,但占用内存越多。

优化建议

  1. 使用精确名称:使用精确名称,提高匹配效率
  2. 避免使用正则表达式名称:避免使用正则表达式名称,性能较低
  3. 合理设置哈希表大小:合理设置哈希表大小,提高查找效率
  4. 减少服务器名称数量:减少服务器名称数量,减少哈希表大小

优化建议原理

  • 使用精确名称可以提高匹配效率,精确名称在哈希表中查找,查找速度快
  • 避免使用正则表达式名称可以提高性能,正则表达式名称需要逐个测试,性能较低
  • 合理设置哈希表大小可以提高查找效率,哈希表越大,查找速度越快,但占用内存越多
  • 减少服务器名称数量可以减少哈希表大小,减少内存占用

示例

http {
    server_names_hash_bucket_size 64;
    server_names_hash_max_size 1024;

    server {
        listen      80;
        server_name example.org www.example.org;
        ...
    }
}

示例说明

  • server_names_hash_bucket_size 64:设置服务器名称哈希桶的大小为 64 字节
  • server_names_hash_max_size 1024:设置服务器名称哈希表的最大大小为 1024 字节

示例原理: 设置服务器名称哈希桶的大小和最大大小可以提高查找效率,减少哈希冲突。

哈希表大小调整

如果哈希表大小不够,Nginx 会报错:

could not build the server_names_hash, you should increase server_names_hash_bucket_size

调整方法

  1. 增加 server_names_hash_bucket_size 的值
  2. 或增加 server_names_hash_max_size 的值

哈希表大小调整原理: 如果哈希表大小不够,Nginx 会报错,需要增加哈希表大小。