通过 nginx 提供多个 SSL 证书时出现问题

通过 nginx 提供多个 SSL 证书时出现问题

我在一个 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.comwww.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;
}

相关内容