Nginx 匹配错误的 server_name

Nginx 匹配错误的 server_name

在同一台服务器下,有几个配置块如下所示

server {
    server_name app.domain1.com;

    listen [::]:443 ssl http2;

    index index.html index.htm index.nginx-debian.html;
    root /home/sites;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

        proxy_buffering off;
        client_max_body_size 0;
        ignore_invalid_headers off;
error_log /var/log/nginx/app-domain1.error_log notice;

    location / {
        proxy_pass http://localhost:8090;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header X-Real-IP $remote_addr;
     }
}

唯一改变的是 server_name,它类似于apppreviewbuild当然还有 proxy_pass ip。此设置工作正常,但现在使用相同配置添加了一个新域,唯一的区别是 server_name 现在是app.domain2.com。此 dns 指向与前一个域相同的 ip。app.domain2.com使用 certbot 生成了 ssl 证书。Nginx 不匹配app.domain2.com,而是匹配app.domain1.com。对于 的任何其他前缀也是如此domain2,它始终匹配app.domain1.com

我尝试添加default包含两个顶级域名的配置,但没有成功。

使用 Cloudflare 进行 DNS 管理,每个条目都使用设置指向服务器 ip DNS only

有任何想法吗?

答案1

对于任何面临类似问题的人。问题最终出在 SSL 上,而不是 server_name 上。出于某种原因,在 SSL 设置期间,certbot 没有include /etc/letsencrypt/options-ssl-nginx.conf;在配置中包含此行。添加它解决了问题

相关内容