Next.js API路由Nginx反向代理失效:POST请求504超时问题
解决Next.js + Nginx反向代理下/api POST请求504超时问题
可能的原因及修复步骤
1. 确认Next.js服务在VPS上正常运行
- 执行以下命令检查服务是否监听
127.0.0.1:3000:ss -tulpn | grep 3000 - 如果服务未运行,使用进程管理工具(如
pm2、systemd)重启Next.js服务。
2. 优化Nginx代理配置
现有配置缺少POST请求体的缓冲区设置,且超时时间可能不足以处理API请求。修改后的配置如下:
location / { proxy_pass http://127.0.0.1:3000; proxy_read_timeout 120; # 延长读取超时,适配API处理时长 proxy_connect_timeout 60; proxy_send_timeout 120; # 新增发送超时设置 proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; 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; proxy_cache_bypass $http_upgrade; # 配置请求体缓冲区,避免大POST请求超时 proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } location /_next/static { add_header Cache-Control "public, max-age=3600, immutable"; proxy_pass http://127.0.0.1:3000/_next/static; } # 可选:单独为/api路径配置更严格的代理规则(如果全局配置无效) location /api { proxy_pass http://127.0.0.1:3000/api; proxy_read_timeout 120; proxy_connect_timeout 60; proxy_send_timeout 120; 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; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; }
修改后执行nginx -s reload生效配置。
3. 检查VPS防火墙/安全组
- 确认本地防火墙(如
ufw、firewalld)允许127.0.0.1访问3000端口; - 若Next.js绑定
0.0.0.0,确保云服务商安全组未阻止3000端口的内部访问。
4. 排查Next.js API路由本身
- 查看Next.js日志,确认/api请求是否到达服务端,是否存在业务逻辑超时(如数据库连接慢、计算任务繁重);
- 若API处理时长确实超过120秒,需优化业务逻辑,或进一步延长Nginx的
proxy_read_timeout值。
内容的提问来源于stack exchange,提问作者Caffeine
相关产品推荐
相关产品推荐

