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

Vaadin 23.1.7开发模式下Nginx WebSocket超时问题求助

解决方案:适配Vaadin开发模式的Nginx配置

问题根源在于Vaadin开发模式下用于热加载的WebSocket请求,在原有配置中未被正确处理,导致Nginx触发默认60秒超时。以下是修正后的完整Nginx配置方案:

1. 在http全局块添加WebSocket连接映射

首先在Nginx的http段中添加以下配置,用于动态处理WebSocket的Connection头:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

2. 修改location代理配置

将原有location /的配置替换为以下内容:

location / {
    proxy_pass              http://192.168.2.10:17080/;

    # 转发客户端真实请求信息
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;

    proxy_cookie_path ~*^/.* /;
    proxy_redirect off;

    # 正确识别并转发WebSocket请求
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    # 延长超时时间,覆盖Nginx默认60秒限制
    proxy_read_timeout      720s;
    proxy_connect_timeout   720s;
    proxy_send_timeout      720s;
}

关键调整说明

  • 动态Connection头处理:通过map指令,仅当请求包含Upgrade头时才设置Connection: Upgrade,避免非WebSocket请求的头信息异常。
  • 修正Host头:将Host $host:$server_port改为Host $host,确保Vaadin能正确识别请求主机地址,避免开发模式下资源路径解析错误。
  • 延长超时窗口:将超时时间调整为720秒,完全覆盖开发模式下热加载WebSocket的心跳周期,避免触发超时断开。

额外兜底配置(可选)

如果上述配置仍有问题,可以单独为Vaadin开发模式专属WebSocket路径添加优先级更高的location:

location /vaadin-dev-server/ws {
    proxy_pass              http://192.168.2.10:17080/vaadin-dev-server/ws;

    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    proxy_read_timeout      720s;
    proxy_connect_timeout   720s;
    proxy_send_timeout      720s;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:26:01