通常情况下,推荐使用 301 Moved Permanently 或 308 Permanent Redirect 将 HTTP 重定向到 HTTPS 上,并且需要注意 POST 请求的处理方式。 nginx配置http跳https if($scheme = http) {return301https://$host$request_uri; } 如果状态码返回301或者302,当post数据到http协议时,重定向后会出现请求方法变为 get,po...
server_name xxx.xxx.xxx.com; # 域名#to httpsreturn301 https://$server_name$request_uri; } 以上配置可满足http 转 https需求, 可以看到当用户不指定https协议时发起请求时,nginx已经通过重定向指向了https 但是之前安装的client还是在向http发送post请求,此时就会出错,因为上面的nginx重定向会丢失post参数,转...
解决办法:将301跳转改为307 return 307 https://$server_name$request_uri;
所以可以直接通过在http server上配置到301 跳转到 https 服务器即可。 代码语言:javascript 复制 # http server server{listen80;server_name _;return301https://$host$request_uri;}# https server server{listen443ssl http2;server_name www.example.com;#...other} 通常, 我个人习惯将两个配置写在同一个...
当使用 Nginx 将 HTTP 跳转到 HTTPS 时,HTTP 请求可能包含不同类型的方法(method),如 GET、POST、PUT、DELETE 等。根据 HTTP 协议的规定,重定向(Redirection)的方式可能会影响请求方法的保持或者修改。 以下是常见的 Nginx HTTP 跳转 HTTPS 的方式及其对请求方法的影响: ...
if ($scheme = http ) { return 301 https://$host$request_uri; } 网站访问也是没有问题的,跳转也是ok的。 配置完成之后,测试接口的时候问题就来了, 所有的post请求都会出现问题,打印日志提示:不支持Get方法。 经过排查,在Nginx日志中发现了蹊跷,所有的post请求都被转成了get方法。
return 301 https://$host$request_uri; 配置好后,会发现重定向时post请求会被转为get请求,这是因为301是永久重定向,将301改成307即可解决 $host:请求的服务端的地址 $request_uri:请求中usl中的参数,不配置此项则会在重定向时丢失参数,或者直接使用http代理后端服务也会丢失参数部分,导致参数无法传递 ...
也可以增加以下配置, 让所有http请求自动跳转到https server { listen 80; server_name test.com; rewrite ^(.*)$ https://$host$1 permanent; } 1. 2. 3. 4. 5. 然后使用chrome先打开自己网站。然后输入chrome://net-internals/#http2 如果列表上面有显示你的网站说明http2已经开启。
在全站支持HTTPS以后,用户可能还会使用http访问,所以很多建议使用301 Moved Permanaently+HSTS的方式跳转到HTTPS后再访问。 但是对于有POST请求的域名是不适合用301 Moved Permanently的,关于post请求重定向用户确认的问题,实际上浏览器都没有实现;而且post请求的重定向应该发起post请求,这里浏览器也并不一定遵守,所以说...
Nginx 强制跳转到HTTPS 因为使用IdentityServer4,所以也配置了HTTPS安全协议。 但是如果俩个都使用的话 ,一是不好区分 ,二是没有太多的必要, 所以就想着取消掉HTTP的访问,全部转向安全协议, 使用Nginx重写转发即可轻松实现。 直接看Nginx配置吧: 代码语言:javascript...