Nginx 全局配置继承自命名配置吗?

Nginx 全局配置继承自命名配置吗?

我有两个 nginx 配置,一个是全局的 catchall 配置,没有设置服务器名称,可以处理任何请求。我还有第二个配置,它设置了服务器名称,只处理特定子域上的请求。

示例(不是真正的配置,但也没有什么其他内容):

server {
 listen 80;
 root /www/live;

 location
 ....
}

server {
 listen 80;
 server_name *.prelive.host.tld;
 root /www/prelive;

 auth_basic "Restricted";
 auth_basic_user_file /etc/htpasswd;

 location
 ....
}

但是,当我将第二个页面纳入配置时,整个页面都会受到密码保护,而不仅仅是预发布页面。

有什么想法可能导致第一个配置继承基本身份验证?

答案1

似乎 nginx 会“随机”选择其中一个配置作为上述设置中的默认配置。我们的解决方案是设置

listen 80 default_server;

代替

listen 80;

在默认配置上,因此 nginx 总是会为除匹配的服务器名称之外的任何内容选择该配置。

相关内容