nginx转换post请求为get

薄洪涛6年前Linux1796

今天调银联收银台回调的时候,遇到一件特别坑的事情,我通过银联付款后,本来应该跳转到我自己定义的回调页面,但是每次都会返回405错误码,很是恼火;

查了下日志

2019/06/24 14:58:39 [error] 7099#0: *99991 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 192.168.8.12, 
server: , request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "xxxx", referrer: "https://xxxx"


我开始以为是我们项目的Referer做了限制,于是用python写了代码请求测试,发现没有限制,但是在写py脚本的时候,发现了出错的原因,垃圾银联的回调请求用的post请求,而我们项目用的前后端分离,请求个页面用post肯定会报错啊;

微信图片_20190625152026.png


于是我想着用ngxin转换下请求方式,把post请求转换成get,然后我发现,如果页面是post请求的本应get请求的页面,会返回状态码405


   upstream local {
      server 127.0.0.1:xx;  你自己的项目的ip及端口
   }

server中,仅需要判断状态码是405的就直接跳转过去就可以了

error_page 405 =200 @405;
  location @405 {
       root /home/www/root/xx;  你自己项目的根目录
       proxy_method GET;
        proxy_pass http://local/$request_uri; 这里nginx会自己拼接参数,这里的local就是上面配置的local 
  }

重启nginx后,解决

比较配置涉密,所以从网上找了个差不多的

upstream local {    
    server 10.0.1.11:81;
}
server {    
    listen 81;    
    server_name testf.xxx.com;    
location / 
{        
    root /data/f/ROOT/;        
    index index.html index.htm;    # 解决vue history模式,刷新404问题。
    try_files $uri $uri/ /index.html;
}    
error_page 405 =200 @405;    location @405 
{
    root /data/f/ROOT/;        
    proxy_method GET;        
    proxy_pass http://local/$request_uri;
    
}    

}


标签: nginx

相关文章

Centos7 下开机自启

我在虚拟机上搭建了一套nginx+php,然后每次开机的时候,都要去手动去运行让服务起来,这我可忍不了了,毕竟我可是懒癌晚期废话少说,我们直接设置开机启动1.在系统目录创建服务文件(不要问为什么,li...

nginx配置详解入门第一篇

nginx配置详解入门第一篇

我们从这张图开始分析nginx配置(借用网图)1. 全局块配置这个全局块配置会影响ngxin的全局,一般包括以下配置user  www; worker_processes ...

Nginx如何获取get/post传递的参数?

有一些业务场景,需要我们用nginx做url的重写,这样的话我们就需要做参数的拼接,比如我们想把xxx.com/a/1/2 重写成yyy.com/b?a=1&b=2,就需要做参数的拼接;假如我...

php程序是如何被解析的?

php程序是如何被解析的?

我们每天都在写php代码,然后往服务器上一丢,你就发现php文件就运行了,嘿,是不是很神奇,但是有没有想过,php是如何被解释执行的呢?要知道apache,nginx都是不能解析.php文件的;所以想...

nginx正向代理与反向代理

nginx正向代理与反向代理

正向代理正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。浏览器中输...

Nginx解决跨域问题

不解释,做个记录location / {     add_header Access-Control-Allow-Origin&n...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。