1. 程式人生 > >優化服務器域名的散列表大小

優化服務器域名的散列表大小

timeout buck abcd index config hash list oct ash

如下,如果在 server_name 中配置了一個很長的域名,那麽重載 Nginx 時會報錯,因此需要使用 server_names_hash_max_size 來解決域名過長的問題,該參數的作用是設置存放域名的最大散列表的存儲桶的大小,根據 CPU 的一級緩存大小來設置。

server {
        listen       80;
        server_name  www.abcdefghijklmnopqrst.com;        # 配置一個很長的域名
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[[email protected] conf]# /usr/local/nginx/sbin/nginx -t     # 如果配置的域名很長會出現如下錯誤
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 64
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed
[[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf
...... http { include mime.types; server_names_hash_bucket_size 512; # 配置在 http 區塊,默認是 512kb ,一般設置為 cpu 一級緩存的 4-5 倍,一級緩存大小可以用 lscpu 命令查看 default_type application/octet-stream; sendfile on; keepalive_timeout 65; server_tokens off; include vhosts/*.conf; }

優化服務器域名的散列表大小