JumpServer4\.10\.16离线部署\+外部Nginx反向代理 解决30分钟空闲断开WebSocket超时(延长10天)
摘要 本文针对JumpServer 4.10.16离线部署环境中Web终端30分钟空闲自动断开问题,提出完整解决方案。通过分析发现,该问题由外部Nginx代理超时、JumpServer程序限制和WebSocket协议特性共同导致。文章详细介绍了四层联动配置修改方案:1)调整外部Nginx反向代理超时参数至10天;2)修改JumpServer核心配置文件;3)更新Web后台会话参数;4)优化资产服务
JumpServer4.10.16离线部署+外部Nginx反向代理 解决30分钟空闲断开WebSocket超时(延长10天)
一、问题现象
生产环境 JumpServer 4.10.16 离线包部署,使用外部独立Nginx反向代理访问,Web终端连接服务器后,空闲30分钟自动断开,报错如下:
空闲时间超过30分钟,断开连接,websocket 已关闭
业务需求:将终端空闲超时从默认30分钟,延长至10天,保障运维长连接不中断。
二、当前部署架构(核心)
本次为标准企业生产架构:外部独立Nginx反向代理 + JumpServer离线容器部署,和纯内部Nginx架构故障点完全不同。
访问链路:用户浏览器 → 外部独立Nginx代理服务器 → JumpServer4.10.16离线服务 → 业务资产服务器
-
JumpServer部署方式:官方离线包解压部署,非纯docker-compose
-
部署路径:/data/jumpserver/jumpserver-ce-v4.10.16-x86_64
-
配置生效路径:/opt/jumpserver/config/(离线包固定生效目录)
-
反向代理:独立外置Nginx(非JumpServer容器内置Nginx)
三、根因分析(为什么固定30分钟断开)
该问题不是SSH服务超时,是多层WebSocket长连接超时限制叠加导致:
-
外部Nginx核心原因:Nginx默认
proxy_read_timeout=30m,刚好匹配30分钟断开,强制关闭WebSocket连接 -
JumpServer程序限制:系统默认终端空闲最大30分钟,程序主动踢除会话
-
WebSocket协议特性:空闲无报文传输,多层代理无心跳保活,连接被强制回收
解决方案:四层联动修改(外部Nginx + JumpServer配置文件 + Web后台参数 + 资产SSH保活),彻底延长至10天无超时。
四、正式解决方案(10天超时配置)
10天对应秒数:864000s
1、修改【外部独立Nginx】反向代理配置(最关键步骤)
外置Nginx是30分钟断开的核心元凶,必须全局放开长连接超时,适配WebSocket协议。
编辑Nginx配置文件:
vi /etc/nginx/conf.d/jumpserver.conf
替换为以下完整配置(仅需修改后端JumpServer宿主机IP):
server {
listen 80;
server_name jms.xxx.com; # 替换为你的域名
client_max_body_size 4G;
# 全局长连接超时设置为10天 864000秒
proxy_connect_timeout 864000s;
proxy_send_timeout 864000s;
proxy_read_timeout 864000s;
send_timeout 864000s;
location / {
# 替换为你的 JumpServer 服务器内网IP
proxy_pass http://192.168.x.x;
# WebSocket长连接必须配置参数
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-Forwarded-For $proxy_add_x_forwarded_for;
# 关闭缓存,避免长连接中断
proxy_buffering off;
proxy_request_buffering off;
}
}
校验并重启Nginx生效:
nginx -t
systemctl restart nginx
2、修改JumpServer核心配置文件(config.txt)
离线包部署固定配置路径:/opt/jumpserver/config/config.txt
vi /opt/jumpserver/config/config.txt
追加/覆盖以下所有参数(统一10天超时+心跳保活):
# 登录会话有效期10天
SESSION_COOKIE_AGE=864000
SESSION_EXPIRE_AT_BROWSER_CLOSE=false
# WebSocket连接超时10天
WEBSOCKET_TIMEOUT=864000
# 终端最大空闲时间10天
TERMINAL_MAX_IDLE_TIME=864000
# 30秒心跳保活,防止中间设备掐断连接
TERMINAL_HEARTBEAT_INTERVAL=30
CLIENT_ALIVE_INTERVAL=30
重启JumpServer服务生效:
cd /data/jumpserver/jumpserver-ce-v4.10.16-x86_64
./jmsctl.sh restart
3、修改JumpServer Web后台会话参数
登录JumpServer后台,依次点击:系统设置 → 安全设置 → 会话安全
修改两项核心参数:
-
连接最大空闲时间(分):改为
14400(10天) -
会话连接最大时间(时):改为
240(10天)
点击【提交】,新打开的终端连接立即生效。
4、优化资产服务器SSH保活配置(兜底加固)
登录被管理的Linux资产,修改ssh配置,防止底层SSH连接断开:
vi /etc/ssh/sshd_config
添加如下配置:
ClientAliveInterval 30
ClientAliveCountMax 9999
重启ssh服务:
systemctl restart sshd
五、补充说明(关键避坑)
-
无需修改容器内部Nginx:本次使用外部独立Nginx,容器内置Nginx不对外提供服务,无需改动
-
不支持0永久超时:JumpServer官方禁止关闭超时,10天为生产最优长效配置
-
必须新开终端测试:修改配置后,历史旧连接依旧失效,需新建终端验证
六、效果验证
配置全部生效后,保持终端空闲超过30分钟,不再报错:
空闲时间超过30分钟,断开连接,websocket 已关闭
长连接可稳定保持10天,完美解决运维长会话断开问题。
(注:文档部分内容可能由 AI 生成)
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)