nginx post方法不起作用

Posted

技术标签:

【中文标题】nginx post方法不起作用【英文标题】:nginx post method does not work 【发布时间】:2019-01-07 20:07:06 【问题描述】:

我在 nginx 使用 Http POST 方法下载 excel 文件时遇到问题。事实上,我得到了一个状态码:405 Not Allowed。

这是我的配置

upstream backend
    server localhost:9090;
    server localhost:9091;
    server localhost:9092;
    server localhost:9093;


server 
    listen       8887;
    server_name  localhost;

    location / 
        proxy_pass  http://backend;
        proxy_next_upstream error timeout http_404; 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
    

我该如何解决这个问题。

提前谢谢你。

【问题讨论】:

您为什么认为这是nginx 问题?配置只是将 POST 传递给后端。很可能是发出 405 响应的后端, 事实上它很奇怪,它有时给我发 404 有时是 405。 【参考方案1】:

Nginx 以 HTTP 405 响应尝试访问静态资产的 POST 请求。

来自几年前的 Nginx 发布文档:

*) Feature: now Nginx returns the 405 status code for POST method requesting a static file only if the file exists.

绕过它的一种方法是添加此行,它会更改响应代码并将您发送到请求的 URI:

error_page 405 =200 $uri;

您可以在此处找到其他解决方案:

http://invalidlogic.com/2011/04/12/serving-static-content-via-post-from-nginx/

我希望这会有所帮助。

【讨论】:

感谢您的回答,但我将应用的架构更改为只有一个端口。

以上是关于nginx post方法不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Fetch API Post 方法不起作用

Ajax post方法不起作用

Spring Boot Cors 问题:尝试了所有方法,但 POST 不起作用

我的 php isset 在 POST 方法中不起作用

Laravel 5 GET 正在工作,但 POST 方法不起作用

guzzle ver 6 post 方法不起作用