我在 sites-available 中的配置文件中有以下两个服务器块:
server {
listen 80;
server_name www.mydomain.be;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 80;
server_name sub.mydomain.be;
root /usr/share/nginx/sub;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
我还为 www.domain.be 和 sub.domain.be 创建了 A 记录,并以我的服务器的 IP 作为值。
然而,当我尝试使用服务 nginx reload 重新加载我的 nginx 配置时,它失败了。
当我删除第二个服务器块时,它会按预期重新加载。
我知道这个话题很热门,并且这里有很多这样的 [nginx][subdomain] 问题,但似乎没有一个问题明确讨论以下三件事如何结合在一起:
- nginx 中的虚拟主机或服务器块(est. server_name 匹配)
- A 记录对 nginx 处理请求的影响
- 需要将主机添加到 /etc/hosts
现在我的印象是,由于缺乏对这个大局的了解,而不是对 nginx 配置的具体了解,导致我无法完成这项工作。
更新:
追踪问题
最初我失败了,没有任何解释。
使用
sudo nginx -c /etc/nginx/nginx.conf -t
我收到了这条消息
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
取消注释后
server_names_hash_bucket_size 64;
问题已解决。
答案1
追踪问题(与 A 记录或 /etc/hosts 文件无关)
最初我失败了,没有任何解释。
使用
sudo nginx -c /etc/nginx/nginx.conf -t
我收到了这条消息
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
取消注释后
server_names_hash_bucket_size 64;
在 nginx.conf 中问题已解决。