MALOUDA-PSA 2024-04-27 15:34 采纳率: 90.5%
浏览 2

nginx中post的问题

nginx设置:

           error_page  405 =200 @405;
                location @405 {
                #proxy_method GET;
                proxy_method POST;   //这里我故意设置为POST
                proxy_pass http://localhost:8000;
                }   


返回了 Bad Gateway

查看调试信息中 NetWork Header:

Request URL: chrome-extension://nomaldfgdgflabblehodgbigepojdcdl/adapter.js
Request Method: GET    // 这里怎么会成了 GET?
Status Code: 200 OK
Referrer Policy: strict-origin-when-cross-origin

这里怎么会成了 GET?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-27 15:34
    关注

    引自免费微信小程序:皆我百晓生

    在Nginx配置中,proxy_method指令用于指定代理服务器请求方法(GET、POST等)。看起来您想要将接收到的POST请求转发到本地主机的8000端口,但实际发送出去的是GET请求。这可能是因为Nginx配置中的错误或者其他原因导致的。

    首先,确认一下您的Nginx版本是否支持proxy_method指令。这个指令在某些旧版本的Nginx中可能不可用。proxy_method是在Nginx 1.9.3及更高版本中引入的。您可以检查Nginx版本通过运行以下命令:

    nginx -v
    

    如果您使用的Nginx版本低于1.9.3,请尝试升级Nginx,或者使用其他方式实现POST请求的转发,例如通过修改原始配置,确保客户端发送的POST请求被正确处理。

    下面是针对Nginx 1.9.3及以上版本的一个修正后的配置示例:

    server {
        listen 80;
        server_name your_server_domain.com;
    
        error_page 405 =200 @405;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location @405 {
            internal;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Content-Length "";
            proxy_set_header X-Method-Override $request_method;
            proxy_pass http://localhost:8000;
        }
    }
    

    在这个配置中,我们做了以下几个调整:

    1. 将location从@405移到服务器块内,确保所有请求都经过此块。
    2. 添加了常规的静态文件处理逻辑:try_files $uri $uri/ =404;
    3. 使用proxy_set_header X-Method-Override $request_method;将原始请求方法传递给后端服务器,这样后端服务器就能知道原始请求是POST而不是GET。

    保存并重新加载Nginx配置后,客户端发送的POST请求应该会被正确地转换为POST,并转发给http://localhost:8000。请确保客户端确实向正确的URL发送POST请求,而不是像调试信息中显示的那样发送到chrome-extension://nomaldfgdgflabblehodgbigepojdcdl/adapter.js,因为这似乎是一个Chrome扩展的地址,而非您的Nginx服务器地址。如果问题依然存在,请提供更多信息,以便进一步排查。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月27日

悬赏问题

  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要