我想将所有内容重定向到https://www
这是我的配置块,我在其中尝试将非www重定向到https,但不起作用。
server {
listen 80;
server_name example.com
return 301 https://www.$server_name$request_uri;
}
server {
listen 80;
server_name www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
location /auth {
...
}
location / {
...
}
ssl_certificate /root/certs/fullchain.pem;
ssl_certificate_key /root/certs/privkey.pem;
}
http://example.com出现404错误
https://example.com不会重定向到https://www
答案 0 :(得分:2)
server {
listen 80;
server_name example.com www.example.com
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com
ssl_certificate Certificate/For/example.com/fullchain
ssl_certificate_key Key/For/example.com/
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name www.example.com
ssl_certificate Certificate/For/www.example.com/fullchain
ssl_certificate_key Key/For/www.example.com/key
//do whatever you want with your https://www.example.com connection
}
请记住同时拥有两个证书,一个用于www,另一个没有,就像您将示例重定向到不带证书的www一样,这是不安全的步骤,并且会显示错误。
希望我能帮忙
答案 1 :(得分:1)
我认为您也应该为https服务器指定服务器名称:
server {
server_name www.example.com
listen 443 ssl;
...
ssl_certificate /root/certs/fullchain.pem;
ssl_certificate_key /root/certs/privkey.pem;
}
您还可以通过将http服务器合并为一个来简化http服务器:
server {
listen 80;
server_name example.com www.example.com
return 301 https://www.$host$request_uri;
}