我正在使用 letsencrypt ssl。当我使用 domain.com 访问网站时,它会被重定向到https://domain.com但我想要https://www.domain.com!
我已在 dns 面板中添加 www 作为 domain.com 的别名,以便访问带有 www 的网站。但现在我得到了双重重定向。
第一次重定向:domain.com 到 https://domain.com,第二次重定向:https://domain.com 到 https://www.domain.com
我想通过单个 301 重定向实现此目的。已经尝试了 SF 中提供的多种解决方案。但都没有用。有人有想法吗?
答案1
假设您可以访问 nginx 配置,并且您的 letsencrypt 证书包含 domain.com 和 www.domain.com,则类似下面的操作应该有效:
server {
listen 80;
server_name www.domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 80;
listen 443 ssl;
server_name domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.com;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
# the rest of your config
}
我认为 SSL 证书需要包含两个域名,因为在请求https://domain.comdomain.com 的 SSL 握手发生在 301 重定向触发之前。
我想您也可以为每个域设置单独的证书,并相应地调整证书路径。