我在一个 nginx 实例上有两个带有 SSL 证书的域名。我尝试将 http 重定向到 https 并删除两个域名上的 www 主机名,即http://www.site1.com重定向至https://site1.com
我目前所拥有的http://site1.com重定向成功并颁发正确的证书,但是http://www.site1.com从 site2.com 颁发 SSL 证书,没有 www 就不会重定向。site2 对所有重定向都运行良好,并颁发正确的证书。我认为这与我在 site2 的 SSL 配置中使用“默认”有关,但是如果我将其删除,两个站点都会返回连接被拒绝错误。
这是配置
/etc/nginx/站点可用/site1
upstream site1.com {
server unix:/home/site1.com/site1.com.sock;
}
server {
listen 80;
server_name site1.com www.site1.com;
return 301 https://site1.com$request_uri;
}
server {
listen 443 ssl;
server_name www.site1.com;
return 301 https://site1.com$request_uri;
}
server {
listen 80;
server_name site1.com;
# SSL configuration
listen 443 ssl http2;
listen [::]:443 ssl http2;
include snippets/ssl-site1.com.conf;
/etc/nginx/站点可用/site2
upstream site2 {
server unix:/home/site2/site2.sock;
}
server {
listen 80;
server_name site2.com www.site2.com site2.co.uk www.site2.co.uk;
return 301 https://site2.com$request_uri;
}
server {
listen 443 ssl;
server_name www.site2.com;
return 301 https://site2.com$request_uri;
}
server {
listen 80;
server_name site2.com;
# SSL configuration
listen 443 ssl default http2;
listen [::]:443 ssl default http2;
include snippets/ssl-site2.com.conf;
include snippets/ssl-params.conf;
答案1
您没有为www.site1.com
和www.site2.com
服务器块定义证书,因此nginx
可能使用配置中首先加载的证书。
snippets/ssl-site1.com.conf
您的证书大概在和文件中定义snippets/ssl-site2.com.conf
。
假设您的证书对于www.
域名的变体有效,则这些语句需要包含在其他服务器块中。
例如:
server {
listen 443 ssl;
server_name www.site1.com;
include snippets/ssl-site1.com.conf;
return 301 https://site1.com$request_uri;
}