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

Ubuntu子目录部署React+Express应用遇405请求错误求助

React+Express部署405错误排查方案

核心问题定位

405错误本质是请求方法不被允许,结合你的场景,大概率是Nginx代理未正确匹配请求,导致请求被当成静态文件处理(静态文件仅支持GET/HEAD),或者Express路由未对应前端使用的请求方法。

具体修复步骤

1. 修正Nginx代理配置

你的Nginx中location /getStyle/带尾斜杠,但前端请求的是/getStyle(无尾斜杠),这会导致Nginx无法匹配代理规则,直接走静态文件路由。修改配置如下:

location /getStyle {
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 移除不必要的WebSocket升级头(你的请求是普通HTTP,不需要这些)
    proxy_pass http://localhost:6000/getStyle;
}

注意:

  • 去掉强制设置的content-type,保留请求原有的头信息
  • 修改后执行sudo nginx -s reload让配置生效

2. 检查Express路由方法匹配

确认Express的/getStyle路由支持前端发送的请求方法(比如POST):

// 示例:如果前端发POST请求,路由要对应
app.post('/getStyle', (req, res) => {
  // 业务逻辑代码
});

如果前端可能用多种方法,可临时用app.all测试,但上线建议明确指定方法。

3. 验证React请求路径

确保React中请求的是相对路径/getStyle,而非带端口的http://localhost:6000/getStyle——服务器环境下前端无法直接访问本地端口,必须通过Nginx代理转发。

验证方法

  • 直接测试后端:curl -X POST http://localhost:6000/getStyle,看是否正常响应
  • 测试Nginx代理:curl -X POST http://tools.domain.com/getStyle,对比后端日志确认请求是否到达

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:48:16