我正在设置一个带 SSL 的 Nginx 服务器。
带有 SSL 的域是 www.mydomain.example
我想重定向所有请求:
http://mydomain.example
, http://www.mydomain.example
, & https://mydomain.example
到
https://www.mydomain.example
我目前有以下服务器 block 设置:
server{
listen 443 ssl;
root /www/mydomain.example/;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
server{
listen 80;
server_name www.mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
server{
listen ssl 443;
server_name mydomain.example;
return 301 https://www.mydomain.example$request_uri;
}
目前这行不通,但我不明白为什么不行。我可以获得 HTTP -> HTTPS 工作或无 www 到 -> www 工作的组合,但如上所述混合它们不起作用。
最佳答案
如果您的 SSL 证书不支持非 www 域,SSL 重定向将不起作用。 配置正确,但可以减少到只有 1 个重定向服务器
另外别忘了重新加载 Nginx sudo service nginx reload
server {
listen 80;
listen 443 ssl;
server_name example.com;
# add ssl settings
return 301 https://www.example.com$request_uri;
}
关于redirect - Nginx 将 HTTP 重定向到 HTTPS 并将非 www 重定向到 ww,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106998/