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

Spring Boot搭配NGINX部署时POST请求返回404异常问题求助

问题根因

你当前Nginx配置存在两处核心错误,直接导致POST请求异常:

  • 全局配置了WebSocket升级头:proxy_set_header Connection 'upgrade'以及配套的Upgrade头配置是仅用于WebSocket场景的专用配置,你给所有普通HTTP请求都强制加上了该头。当POST请求携带Connection: upgrade头发送到Spring Boot后端时,后端会将其识别为非法的WebSocket升级请求,直接返回404。
  • 错误的404重写配置:error_page 404 =200 $uri本是单页应用的路由 fallback 配置,会把真实的404状态码强制改写为200返回,干扰问题排查。
修复方案

根据你是否使用WebSocket功能选择对应方案即可:

方案1:应用无WebSocket需求

直接删除所有WebSocket相关配置,修改后完整的server块配置如下:

server {        
listen 80;        
listen [::]:80;  
server_name example.com;    

location / {             
       proxy_pass http://localhost:9077/; 
       proxy_http_version 1.1;
       proxy_set_header Host $host;   
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Port $server_port;
      } 

 # 测试阶段先注释该行,确认所有请求正常后,若为单页应用需要路由回退再打开
 # error_page  404     =200 $uri;
}

方案2:应用需要同时支持普通HTTP请求和WebSocket

新增逻辑判断,仅WebSocket请求才携带升级头,修改后配置如下:

# 该map块需放在http配置层级下,不要放在server块内部
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {        
listen 80;        
listen [::]:80;  
server_name example.com;    

location / {             
       proxy_pass http://localhost:9077/; 
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection $connection_upgrade;
       proxy_set_header Host $host;   
       proxy_cache_bypass $http_upgrade;  
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Forwarded-Port $server_port;
      } 

 # 测试阶段先注释该行,确认所有请求正常后,若为单页应用需要路由回退再打开
 # error_page  404     =200 $uri;
}

修改完成后执行nginx -s reload重载配置,即可恢复所有POST请求正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:03