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

Nginx反向代理将POST请求转为上游服务器GET请求问题咨询

Nginx反向代理POST转GET问题解决

问题原因

从你提供的访问日志能明确看到:首先是一个POST请求触发了301重定向,随后客户端自动将请求方法改成了GET。这是因为HTTP规范规定,301/302重定向会让客户端把非GET请求转换为GET请求。另外你的Nginx配置里proxy_pass指向的是localhost:3110,但你说明后端服务运行在3210端口,这是明显的配置错误。

修复方案

1. 改用保留请求方法的重定向状态码

把80端口server块里的return 301换成return 307(临时重定向,保留原请求方法和请求体),或者return 308(永久重定向,同样保留请求方法):

server {
    listen 80;
    server_name api.mydomain www.api.mydomain; 
    return 307 https://$host$request_uri;
}

2. 修正后端端口指向

将443端口server块中的proxy_pass地址改成实际的后端端口3210:

location / {
    proxy_pass http://localhost:3210;
    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 X-Forwarded-Proto $scheme;
}

3. 重启Nginx生效

修改完配置后执行命令重启Nginx:

sudo nginx -s reload

额外提示

  • 尽量让客户端直接请求HTTPS地址,彻底避免重定向带来的方法转换问题。
  • 可以用curl命令验证修复效果:
curl -X POST https://api.mydomain/api/v1/user/register -d "test=data" -v

查看请求是否直接到达后端,无重定向跳转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:57:17