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 500;
        proxy_buffer_size   50m;
        proxy_buffers   32 50m;
        proxy_busy_buffers_size   50m;
        proxy_temp_file_write_size 50m;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        location / {
            proxy_cache off;
            proxy_pass http://gaogd;
        }
}

server {
         server_name  gaogd.com;
        location / {
        if ($request_method ~ ^(POST)$) {
            proxy_pass http://www.gaogd.com;
            break ;
        }
        rewrite ^/(.*)$   http://www.gaogd.com/$1 permanent;
    }

}

## 301 跳转问题解决
上面是把gaogd.com 这个域名跳转到 www.gaogd.com ,但是如果进行post操作gaogd.com 这个时候,如果直接使用rewrite 规则进行301 跳转的时候。
那么post请求就会变成get请求。
解决,在做跳转之前,想判断这个请求的到底是get 还是post 请求,如果是post请求,那就使用 proxy_pass 方法,反之使用write方法
时间: 2024-10-09 03:30:51

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

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方式,导

常用nginx rewrite重定向-跳转实例:

1,将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com permanent; rewrite ^/connect/(.*)$ http://connect.myweb.com/$1 permanent; 2,将connect.myweb.com 301跳转到www.myweb.com/connect/ if ($host = "connect.myweb.com"

使用 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

nginx设置301跳转

在server段域名下设置: if ( $host = 'xxxx.com' ) {              rewrite ^/(.*)$ http://www.xxxx.com/$1 permanent;  } permanent – 返回永久重定向的HTTP状态301 这里要注意的是,nginx语法检测特别严格,if和后面括号以及变量等号这些元素都要有空格. 如果没有空格的话会报[emerg] unknown directive "if($host!="这样的错误. 检查配置是

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的应用-根据访问平台做简单跳转

Nginx Rewrite的应用-根据访问平台做简单跳转 Rewrite模块简介 Rewrite最主要的作用就是对URL进行重写,即重定向.举个简单的例子,我们用电脑打开淘宝显示出的页面与手机打开显示出的页面,或者是IE与Chrome浏览器打开的页面,有着特别大的差别,这就是使用了Rewrite模块,为用户提供最合适的页面. Rewrite的配置 一. 在配置之前请先安装好Nginx.不会安装的同学请看我之前写过的Nginx的编译安装.二. 下面我们来编辑Nginx的主配置文件: [[email

相信301跳转大家都知道 rewrite

相信301跳转大家都知道,这样有利于权重集中,但是我在.htaccess文件写上: RewriteEngine on rewriteCond %{http_host} ^phpddt.com [NC] rewriteRule ^(.*)$ http://www.phpddt.com/$1 [L,R=301] 上传服务器根目录后,发现没效果,肯定是rewrite_module没开启,开启过程如下: centos的配置文件放在: /etc/httpd/conf/httpd.conf 打开文件找到:

nginx rewrite标签配置以及用户认证配置

一.nginx  rewrite标签 rewrite 实现URL的改写主要是实现伪静态 1.  rewrite指令语法 指令语法:rewrite regex replacement[flag] 默认值:none 应用位置:server,location,if rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement部分内容,结尾是flag标记,下面是一个简单的URL Rewrite跳转 Rewrite ^/(.*)http://www.eti

Nginx Rewrite正则表达式案例

前两天简单整理了下Nginx的URL Rewrite基本指令,今天谈谈Nginx Rewrite的location正则表达式. 1.Nginx Rewrite 基本标记(flags) last 相当于Apache里的[L]标记,表示完成rewrite break 本条规则匹配完成之后,终止匹配,不再匹配后面的规则. redirect 返回302临时重定向 地址栏会显示跳转后的地址 permanent 返回301永久重定向 地址栏会显示跳转后的地址 2.正则表达式: 1)变量名,错误的值包括:空字