Nginx 405 not allowed解决办法

场景: 对外接口在只有通过GET请求才能获取到页面数据,但是第三方请求通过Form表单将这个接口的请求通过POST方式来请求,所以出现 405 的报错,第三方那边不可能改,因此只有我们强制将POST请求转成GET请求。

场景一:
本地访问没有设置过代理,location中只有root设定的字段,这时可以用return加301或者302状态码结合proxy将请求转过去即可

##在nginx中增加如下配置即可
   error_page 405 =200 @405;
    location @405 {
        proxy_method GET;
        return 301 https://${server_name}$request_uri;
        #error_page 405 =200 https://$host$request_uri;     #网上有这种,我没有试过
    }

备注:

301 是永久重定向
302 是临时重定向

场景二:前端请求是通过代理过来的,这时直接使用代理将请求转发过去即可

   error_page 405 =200 @405;
    location @405 {
        proxy_method GET;
        proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://test_server;
    }

我当时尝试用rewrite重写,后来发现不行,所以用 proxy 方式

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值