nginx/conf.d/ 下有多个 nginx 配置文件和 404

nginx/conf.d/ 下有多个 nginx 配置文件和 404

一个看似非常简单的反向代理配置让我头疼。主配置文件 /etc/nginx/nginx.conf 有 "include /etc/nginx/conf.d/*.conf;"

然后我在 conf.d: 下有两个 conf 文件, default-1.confdefault-2.conf 一个文件有:

server {
  # HealthCheck 
  server_name _;
  listen 0.0.0.0:443 ssl ;
  location = /health.html {
  root /usr/share/nginx/html;
 }
}

第二个文件有额外的代理声明

server {

 listen 0.0.0.0:443 ssl ;

 server_name www.example2.com;    
 ...    
 location / {    
 set $backend "some-backend";    
 proxy_pass $scheme://$backend;     
 }  
}

当 conf.d/ 下只有 default-1.conf 时, curl -k https://localhost/health.html可以工作。

如果我也将 default-2.conf 放在 conf.d/ 下,那么相同的 curl 命令会给出 404 Not Found。我在 error.log 下也没有看到任何错误。我做错了什么?

如何了解使用这些多个较小的 conf 文件构建最终 conf 文件时所应用的规则?

谢谢。

答案1

server_name _;不会将其设置为默认的万能服务器。来自 NGINX服务器名称

_在 catch-all 服务器示例中可以看到奇怪的名称:

server {
    listen       80  default_server;
    server_name  _;
    return       444;
}

这个名称没有什么特别之处,它只是无数无效域名中的一个,这些域名与任何真实名称都不会相交。其他无效名称(如--和)!@#同样可以使用。

再进一步:

请注意,无法使用server_name指令。这是 listen指令,而不是server_name指示。

default-1.conf应该有:

server {
    # HealthCheck 
    listen       0.0.0.0:443  ssl  default_server;
    server_name  _;

    location = /health.html {
        root /usr/share/nginx/html;
    }
}

相关内容