我按照这个回答https://stackoverflow.com/a/28068250/3108268但是它只从http重定向到https而非www重定向到www,但是如果我在https://example.com访问我的网站,我会得到'你的连接不安全'。
如何将其重定向到https://www?
server{
listen 443 ssl;
server_name www.mydomain.com;
root /www/mydomain.com/;
ssl on;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name www.mydomain.com mydomain.com;
return 301 https://$server_name$request_uri;
}
server{
listen 443;
server_name mydomain.com;
return 301 https://www.$server_name$request_uri;
}
答案 0 :(得分:2)
第三台服务器缺少SSL证书,这就是浏览器说连接不安全的原因。
用以下代码替换最后两台服务器:
if(~some condition~){
return <Text> New Label </Text>
}else if(~some other condition~){
return <Text> Another Label </Text>
}else{
return <Text>label</Text>
}
答案 1 :(得分:1)
获得正确配置的一个好方法是为每个重定向使用新块,一个从http到https,一个到非www到www。
server {
listen 80;
server_name www.example.com example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private/key.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
server_name example.com;
# do the proper handling of the request
}