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

Nginx反向代理SpringBoot动态内容报504超时问题求助

解决Nginx反向代理SpringBoot动态接口504超时问题

针对静态资源访问正常、动态接口报upstream timed out (110: Unknown error) 504超时的问题,从配置修正和故障排查角度给出以下解决方案:

1. 优先修正配置错误

(1)补全后端服务端口

你的upstream块仅配置了后端IP,未指定端口。Nginx默认会尝试连接后端80端口,但SpringBoot应用通常默认运行在8080端口,这会导致Nginx无法连通后端服务,直接触发超时。

修改upstream配置,添加SpringBoot的实际运行端口(示例为8080,根据你的实际情况调整):

upstream backend_server{
    server 172.22.56.180:8080 weight=1;
    server 172.22.56.181:8080 weight=1;
}

(2)替换无用的uwsgi配置

location /块中的uwsgi_send_timeout、uwsgi_connect_timeout等参数是给uWSGI服务器(通常搭配Python应用)使用的,和SpringBoot的HTTP服务完全不兼容,直接删除这些配置,替换为HTTP代理对应的proxy_*超时参数:

location / {
    proxy_pass http://backend_server;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 配置HTTP代理超时
    proxy_send_timeout 3600s;
    proxy_read_timeout 3600s;
    proxy_connect_timeout 60s;
}

(3)清理无关的fastcgi配置

server块中的fastcgi_*系列配置是给PHP-FPM等FastCGI服务用的,SpringBoot场景下完全无用,删除这些配置可简化配置结构,避免潜在干扰。

2. 网络与后端服务排查

  • 验证后端连通性:在Nginx服务器上执行curl http://172.22.56.180:8080/你的动态接口路径,或telnet 172.22.56.180 8080,确认Nginx能正常访问后端SpringBoot服务。如果不通,检查后端服务器的防火墙/安全组是否开放对应端口,或网络路由是否正常。
  • 查看后端日志:检查两台SpringBoot服务器的应用日志,确认请求是否到达后端。如果请求到达但后端处理超时,需要优化接口性能,或根据实际处理时长调整Nginx的proxy_read_timeout值。
  • 修正Host头:原配置中proxy_set_header Host $http_host:$proxy_port会将Nginx的端口传递给后端,可能导致后端服务处理异常,改为proxy_set_header Host $host即可。

修正后的完整配置示例

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    proxy_send_timeout  3600s;
    proxy_read_timeout  3600s;
    proxy_connect_timeout 60s;

    sendfile        on;

    keepalive_timeout  65;

    #gzip  on;
    upstream backend_server{
        server 172.22.56.180:8080 weight=1;
        server 172.22.56.181:8080 weight=1;
    }

    server {
        large_client_header_buffers 4 16k;
        client_max_body_size 300m;
        client_body_buffer_size 128k;

        proxy_pass_header Set-Cookie;
        proxy_redirect     off;
        proxy_hide_header  Vary;
        proxy_set_header   Accept-Encoding '';
        proxy_ignore_headers Cache-Control Expires;
        proxy_set_header   Referer $http_referer;
        proxy_set_header   Host   $host;
        proxy_set_header   Cookie $http_cookie;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        listen       80;
        server_name  localhost;

        location /resources/ {
            alias  /usr/local/openresty/nginx/html/resources/;
            index  index.html index.htm;
        }

        location / {
            proxy_pass http://backend_server;
            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_send_timeout 3600s;
            proxy_read_timeout 3600s;
            proxy_connect_timeout 60s;
        }
        
        error_page   500 502 503 504  /resources/50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

修改配置后,执行nginx -s reload使配置生效,再测试动态接口访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 21:12:09