【Nginx】Http重定向Https

💡 Tips:把原来http协议的旧网页强制改成https协议 📢 利用 Nginx 将 Http 强转为 Https; 但是要注意修改一下 curl 直接调用的接口

通过 Rewrite 重写 URL

1
2
3
if ($scheme = http){
	rewrite ^(.*)$  https://$host$1 permanent;
}

这是一种十分常见的方法,但是这个却存在一个致命的问题:当请求的参数是 **POST **方式提交会丢失

通过 Return 重定向

1
2
3
if ($scheme = http){
	return 301 https://$server_name$request_uri;
}

rewrite 最后一项flag参数为permanent时,返回 **301 **永久重定向,**POST **请求中的用户信息不会被保存,转而直接采用 **GET **请求访问新地址。相似的 **302 **是临时重定向,**POST **请求也会失败,但比前者多了一步中间信息返回给客户端的步骤。
所以做出修改

1
2
3
if ($scheme = http){
	return 307 https://$server_name$request_uri;
}

**307 **也是临时重定向,但它可以保持原请求的方法,不做修改的访问新地址。**POST **请求自然不会有问题。

总结

在没有 **POST **请求的情况,使用 301,省去中间返回信息的步骤,更安全。有 **POST **请求使用 307.
但是如果是通过 curl (代码方式进行请求的)必须对重定向进行处理

0%