HTTPS 将 www 重定向到非 www

时间:2021-01-25 14:11:06

标签: nginx

我有 2 个域,它应该在同一个目录下工作。虽然从带/不带 www 的 http 重定向工作正常,但 https www 到非 www 不起作用。这是我的配置文件:

server {
    listen 80;
    server_name domain1.com www.domain1.com;
    return 301 https://domain1.com$request_uri;
}

server {
    listen 80;
    server_name domain2.com www.domain2.com;
    return 301 https://domain2.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.domain1.com;
    return 301 https://domain1.com$request_uri;
    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;
}

server {
    listen 443 ssl;
    server_name www.domain2.com;
    return 301 https://domain2.com$request_uri;
    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;
}

server {
    listen 443 ssl;
    server_name domain1.com;
    root /var/www/domain1.com;
    index index.php index.html index.htm;
    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }

}

server {
    listen 443 ssl;
    server_name domain2.com;
    root /var/www/domain1.com;
    index index.php index.html index.htm;
    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    }

}

你能告诉我它有什么问题吗? SSL 证书 domain1.com 已获得所有域的内部证书,包括有/没有 WWW。

1 个答案:

答案 0 :(得分:0)

如果有人遇到同样的问题,删除“ssl”缩写即可解决问题。所以,而不是听 443 ssl;在 301 个服务器块中更改为侦听 443;