【发布时间】:2014-05-12 14:40:17
【问题描述】:
如果我在 https 上,Nginx 无法将非 www 重定向到 www:
https://domain.com 到 https://www.domain.com
我在.conf 中的当前设置是:
server {
listen 80;
server_name www.domain.com domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443;
server_name domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen IP_ADDRESS:443 ssl;
server_name www.domain.com;
...
}
http://domain.com 到 https://www.domain.com 和 http://www.domain 到 https://www.domain.com 有效,但 https 上的非 www 到 www 无效。
如果我在第二个 server 块上添加 IP_ADDRESS,我会在 Chrome 中收到错误(SSL 错误),并且(www 和非 www)都停止工作。
更新:
感谢 Steffen(以下回答),我将自签名证书更新为 *.domain.com 而不是 domain.com。
.conf 文件已更新为以下格式:
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
server {
listen 80;
server_name www.domain.com domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name domain.com;
return 301 https://www.domain.com$request_uri;
}
server {
listen 443 ssl;
server_name www.domain.com;
...
}
【问题讨论】:
-
还要确保您的服务器块或更高版本具有 ssl 证书行,以便人们在重定向之前可以实际连接。
标签: .htaccess redirect ssl nginx