You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx作为API反向代理无法转发完整请求信息的配置求助

解决Nginx反向代理Node.js API时请求丢失的问题

兄弟,我太懂你这糟心的情况了!把Node.js API用pm2跑起来,再套个Nginx反向代理,本来以为万事大吉,结果所有请求都变成了根路径的GET,各种PUT、DELETE还有参数、请求体全丢了,简直让人头大。

你的基础配置已经有了雏形,但缺了几个关键的代理设置,导致Nginx没把请求的完整信息传递给后端的Node服务。我给你调整一下配置,保证能转发完整的请求方法、URL、参数和请求体:

server {
    listen 80;
    listen [::]:80;
    server_name api-prod.mysite.com www.api-prod.mysite.com localhost;

    location / {
        proxy_pass http://127.0.0.1:3111;
        proxy_redirect off;
        proxy_buffering off;

        # 传递原始请求方法给后端
        proxy_set_header Request-Method $request_method;
        # 保留完整的请求URI(路径+查询参数)
        proxy_set_header Request-URI $request_uri;
        # 保留原始Host头,避免后端识别错误
        proxy_set_header Host $host;
        # 传递真实客户端IP
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 保留请求体的类型和大小,确保后端能正确解析
        proxy_set_header Content-Type $content_type;
        proxy_set_header Content-Length $content_length;

        # 启用HTTP/1.1,支持PUT/DELETE等方法及请求体转发
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # 延长超时时间,避免长请求被提前截断
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

我给你拆解下新增的关键配置:

  • proxy_set_header Request-Method $request_method:把你前端发的PUT/DELETE/OPTIONS等原封不动传给Node服务,不会默认转成GET
  • proxy_set_header Request-URI $request_uri:保留请求的完整路径和参数,比如/api/user?id=123不会被改成/
  • proxy_http_version 1.1:HTTP/1.0对非GET请求的支持有限,升级到1.1才能稳定处理各种请求方法和请求体
  • Content-Type和Content-Length:确保后端能正确识别请求体的格式(比如JSON、表单)和大小,不会出现解析失败的情况
  • 超时设置:如果你的API有处理大请求或者耗时操作的情况,避免Nginx提前断开连接,保证请求体完全转发

修改完配置后,记得重启Nginx让配置生效:

sudo nginx -s reload

你可以用curl测试一下,比如发个PUT请求验证:

curl -X PUT http://api-prod.mysite.com/api/test -d '{"name":"test"}' -H "Content-Type: application/json"

这样应该就能解决所有请求变GET、信息丢失的问题了!

内容的提问来源于stack exchange,提问作者lu1her

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:21:37