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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章