在給nginx 配置了一個(gè)超長(zhǎng)的域名后,通過(guò) /usr/local/nginx/sbin/ngnix -t 檢查配置文件時(shí)出現(xiàn)一下錯(cuò)誤:
解決辦法是在nginx的配置文件的http段中增加如下配置:
如果已經(jīng)存在,需要加大后面的數(shù)值,注意:該數(shù)值是32的倍數(shù)為宜。
下面是nginx官方文檔:
如果定義了大量名字,或者定義了非常長(zhǎng)的名字,那可能需要在http配置塊中使用server_names_hash_max_size和server_names_hash_bucket_size指令進(jìn)行調(diào)整。server_names_hash_bucket_size的默認(rèn)值可能是32,或者是64,或者是其他值,取決于CPU的緩存行的長(zhǎng)度。如果這個(gè)值是32,那么定義“too.long.server.name.example.org”作為虛擬主機(jī)名就會(huì)失敗,而nginx顯示下面錯(cuò)誤信息:
could not build the server_names_hash,
you should increase server_names_hash_bucket_size: 32
出現(xiàn)了這種情況,那就需要將指令的值擴(kuò)大一倍:
http {
server_names_hash_bucket_size 64;
...
如果定義了大量名字,得到了另外一個(gè)錯(cuò)誤:
could not build the server_names_hash,
you should increase either server_names_hash_max_size: 512
or server_names_hash_bucket_size: 32
那么應(yīng)該先嘗試設(shè)置server_names_hash_max_size的值差不多等于名字列表的名字總量。如果還不能解決問(wèn)題,或者服務(wù)器啟動(dòng)非常緩慢,再嘗試提高server_names_hash_bucket_size的值。