在同一台服务器下,有几个配置块如下所示
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,它类似于app
、preview
,build
当然还有 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;
在配置中包含此行。添加它解决了问题