nginx sites-available 中的 server_name、/etc/hosts 文件和 A 记录之间的关系

nginx sites-available 中的 server_name、/etc/hosts 文件和 A 记录之间的关系

我在 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] 问题,但似乎没有一个问题明确讨论以下三件事如何结合在一起:

  1. nginx 中的虚拟主机或服务器块(est. server_name 匹配)
  2. A 记录对 nginx 处理请求的影响
  3. 需要将主机添加到 /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 中问题已解决。

相关内容