Nginx conf配置实现HTTPS跳转

Nginx主机配置好SSL凭证以后,如果同时开放监听80和443端口,并实现http访问请求自动跳转到https,可以通过设置conf文件来实现,如
server {
listen 80;
listen 443 ssl;
server_name localhost;
root /home/myhome/app/public;
....
}

但实际上可能出现两种错误:
1. Error 310 (net::ERR_TOO_MANY_REDIRECTS)
2. 400 Bad Request The plain HTTP request was sent to HTTPS port
解决办法包括以下几点:
1.#去掉 ssl on 在server{}内有ssl on的语句,前面加#
2./etc/nginx/fastcgi_params 在最后面添加 fastcgi_param HTTPS $fastcgi_https;
3.在conf文件顶部,server外面添加
map $scheme $fastcgi_https {
default off;
https on;
}
这样http请求才可以传递到https端口上
4. 最后设置301转向
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}

重启Nginx

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据