http强制转https
Nginx配置
server配置体内
set $flag 0;
if ($server_port !~ 443){
set $flag "${flag}1";
}
if ($request_method ~ ^(POST)$) {
set $flag "${flag}2";
}
if ($flag = "01"){
rewrite ^(/.*)$ https://$host$1 permanent;
}
if ($flag = "012"){
return 307 https://$host$request_uri;
}
此配置方法可以解决post请求丢失参数的问题
其他方法
① 请求头 meta标签。
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests" />
这个是以客户端方式解决问题,缺点是可能不受支持或者作用范围小
② 代码或者容器设置
在nginx代理设置 X-Forwarded-Proto报头,然后代码根据报头内存储的协议信息(http/https)进行处理