我有两个网站,但我认为问题出在 SNI(我不确定)。
当我使用 SSL 启用第一个网站(与第二个相比是一个旧网站)时,它工作正常。
但问题是,如果我使用 SSL 启用第二个,则只有第二个网站可以正常工作。第一个网站显示不安全的网站错误(它从第二个网站加载证书,因此 one.com 实际上显示 second.com)。
这是我的site.conf
文件(两个站点的内容相似):
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
root /home/example;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
access_log /var/log/nginx/example_access_log;
error_log /var/log/nginx/example_error_log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
我该怎么办?
您的 server{} 块缺少该
server_name
设置。 {} 这就是 Nginx 选择使用哪个服务器块的方式——既用于来自 SNI 的 TLS 证书,也用于来自 HTTP Host 的实际网站。