nginx 301跳转https后post请求失效问题解决

app本地请求是http端口,后来升级https强制301跳转,设置如下

server {
listen 80;
server name www.XXX.com;
rewrite ^/(.*)$   https://www.XXX.com/$1 permanent;
}

问题描述及原因

强制把http请求跳转到https,结果发现App有部分的功能不能使用,因为App一共设置了4种请求方式,分别是GET,POST,DELETE和OPTIONS方式,设置301跳转后所有的请求方法都变成了GET方式,导致一些功能无法正常使用.

http请求方式

问题解决

解决思路也很简单,所有GET请求直接301跳转不用管,非GET请求的用proxy_pass来转发,将参数传递给服务,nginx配置如下.

server {
        listen 80;
        server_name  www.XXX.com;
        location / {
        if ($request_method ~ ^(POST|DELETE|OPTIONS)$) {
            proxy_pass https://www.XXXX.com;
            break ;
        }
        rewrite ^/(.*)$   https://www.XXX.com/$1 permanent;
    }

}

参考链接: https://segmentfault.com/q/1010000007026578

原文地址:https://www.cnblogs.com/johnsonjie/p/10301219.html

时间: 2024-10-09 03:30:55

nginx 301跳转https后post请求失效问题解决的相关文章

Nginx 301跳转设置方法

下面示例将www.example.com跳转到example.com,如果你需要跳转到www域名,相应修改一下下面代码即可.Nginx 301跳转设置其实很简单,首先打开站点.conf配置文件,文件路径一般是:/usr/local/nginx/conf/vhost/,然后下载本地或者使用vi修改都行. 找到server代码段,如下相应修改即可: server { listen 80; server_name www.example.com example.com; if ($host ~* ww

nginx rewrite 301 跳转 post 请求失效问题解决

upstream gaogd{     server 118.8.8.8:80 weight=2; } server {         listen       80;         server_name  www.gaogd.com;         client_max_body_size 20m;         proxy_connect_timeout 600;         proxy_read_timeout 500;         proxy_send_timeout 

Nginx自动跳转https

Nginx自动从http跳转到https #vim nginx.conf server { listen 80; server_name www.test.com; charset utf-8; return     301 https://$server_name$request_uri;  #添加这行,即可以实现从http跳转到https access_log  logs/wwwuat.yaok.com.log  main; location / { rewrite ^/(.*)$ //$1

使用 Nginx 实现 301 跳转至 https 的根域名

基于 SEO 和安全性的考量,需要进行 301 跳转,以下使用 Nginx 作通用处理 实现结果 需要将以下地址都统一跳转到 https 的根域名 https://chanvinxiao.com http://chanvinxiao.com (不带 www 的 http) http://www.chanvinxiao.com (带 www 的 http) https://www.chanvinxiao.com (带 www 的 https) 301 与 302 的区别 301 是永久重定向,30

ngxin做http强制跳转https,接口的POST请求变成了GET

公司准备将 http 换成 https,就需要 http 强制跳转到 https.这个在网上搜了下,基本总结下 在 server 里面配置 rewrite ^(.*)$  https://$host$1 permanent; 或者在server里面配置 return 301 https://$server_name$request_uri; 或者在server里面配 if,这里指的是需要配置多个域名 if ($host ~* "^wangshibo.com$") {     rewri

Nginx强制http跳转https访问

Nginx强制http跳转https访问有以下几个方法 nginx的rewrite方法 可以把所有的HTTP请求通过rewrite重写到HTTPS上 配置 方法一 1 server{ 2 listen 80; 3 server_name XXXXX.com; //你的域名 4 rewrite ^(.*)$ https://XXXXXX.com permanent; 5 location ~ / { 6 index index.html index.php index.htm; 7 } 8 } 方

nginx 代理https后,spring mvc web应用redirect https变成http

前几天用nginx 代理https后,应用redirect https变成http,导致网站无法访问的问题,在网上找了半天,终于找到了解决方法了. 虽然自己解决了,我相信还有其他朋友遇到过这个问题,所以转载分享一下: 原因分析: 浏览器到nginx是https,nginx到应用服务器变成http, 应用服务器,再做302 redirect的时候,返回的redirect 地址就好变成http的地址: 原因是spring mvc的servlet的secheme取值,request.getScheme

nginx证书制作以及配置https并设置访问http自动跳转https(反向代理转发jboss)

nginx证书制作以及配置https并设置访问http自动跳转https 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引用文件,通常这些文件并不在同一个软件包中.通常这个文件名类似libssl-dev. 生成证书 可以通过以下步骤生成一个简单的证书: 首先,进入你想创建证书和私钥的目录,例如: $ cd /usr/local/nginx/conf 创建服务器私钥,命令会让你输入一个口令: $

nginx中实现把所有http的请求都重定向到https

在网站启用https之后,我们可能会有一个需求,就是将所有的http的请求自动地重定向到https, 如果前端是使用的nginx来实现的https,我们可以这样配置nginx的301重定向: server {  listen  80;  server_name    xxx.com;  return  301 https://$server_name$request_uri; } server {  listen  443 ssl;  server_name    xxx.com.com;  [