小编jas*_*ace的帖子

Nginx 设置 server_names_hash_max_size 和 server_names_hash_bucket_size

我们在一项服务中使用 Nginx 作为 Apache 的反向代理,该服务为任何人提供自己的网站。在创建帐户时,系统会为域创建一个新的 nginx conf 文件,其中包含两个条目,一个用于端口 80,另一个用于 443。我们注意到,每 30 个左右的域,我们都会收到错误消息:

Restarting nginx: nginx: [emerg] could not build the server_names_hash, 
you should increase either server_names_hash_max_size: 256 
or server_names_hash_bucket_size: 64.
Run Code Online (Sandbox Code Playgroud)

随着大约 200 个域的增长,我们不得不将 server_names_hash_max 大小增加到 4112,并且担心这不会很好地扩展。我希望了解这些配置是如何工作的,以及确保我们可以使用这种方法扩展到数千个域的最佳设置是什么。

此外,在该哈希大小下,nginx 开始需要几秒钟的时间来重新加载,这导致系统在重新启动时不可用。

以下是整体设置(在 Ubuntu 服务器 10.10 nginx/1.0.4 上运行):

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
    worker_connections 4096;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 300;
    types_hash_max_size 2048;
    # server_tokens off;

    server_names_hash_bucket_size 64; …
Run Code Online (Sandbox Code Playgroud)

nginx

28
推荐指数
3
解决办法
6万
查看次数

标签 统计

nginx ×1