当前位置: 首页 > news >正文

JumpServer4\.10\.16离线部署\+外部Nginx反向代理 解决30分钟空闲断开WebSocket超时(延长10天)

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长连接超时限制叠加导致:

  1. 外部Nginx核心原因:Nginx默认proxy_read_timeout=30m,刚好匹配30分钟断开,强制关闭WebSocket连接

  2. JumpServer程序限制:系统默认终端空闲最大30分钟,程序主动踢除会话

  3. 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-tsystemctl 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

五、补充说明(关键避坑)

  1. 无需修改容器内部Nginx:本次使用外部独立Nginx,容器内置Nginx不对外提供服务,无需改动

  2. 不支持0永久超时:JumpServer官方禁止关闭超时,10天为生产最优长效配置

  3. 必须新开终端测试:修改配置后,历史旧连接依旧失效,需新建终端验证

六、效果验证

配置全部生效后,保持终端空闲超过30分钟,不再报错:

空闲时间超过30分钟,断开连接,websocket 已关闭

长连接可稳定保持10天,完美解决运维长会话断开问题。

(注:文档部分内容可能由 AI 生成)

http://www.jsqmd.com/news/983023/

相关文章:

  • ARM Cortex-M4与K30微控制器:高性能低功耗嵌入式开发实战解析
  • 保姆级教程:用MMSegmentation+Swin-T+UperNet搞定停车场场景语义分割(附完整代码与数据集)
  • 【粉丝福利社】一本书讲透具身智能:技术、应用、商业与未来
  • 阿贝云免费服务器全面评测:永久免费的云服务值得冲吗?
  • 嘉哲AI智能财税平台深度测评:企业风险评测的智能化实践指南
  • 开源数据目录选型实战:元数据管理与数据血缘落地指南
  • HTTPS加密原理:图解安全传输全流程
  • 2024年Adobe Substance 3D Designer
  • 嵌入式音频系统低功耗设计:I2S/SAI接口时序参数深度解析与工程实践
  • Docker Swarm和K8S有什么区别?一图看懂复杂
  • 暗黑破坏神2存档编辑器完整指南:5分钟打造完美角色体验
  • 内核级硬件伪装技术实战指南:Windows驱动开发深度解析
  • Spring AI 实战指南(二):RAG、向量数据库、Tool Calling、Agent 企业级开发实战
  • 拷贝漫画第三方客户端终极指南:打造纯净高效的Android漫画阅读体验
  • LangChain4j 开发Java Agent智能体- 嵌入模型与向量数据库
  • i.MX 8ULP ADC/DAC/CMP电气特性深度解析与实战设计指南
  • QNAP 存算一体:理顺航空航天精密铸造车间 MES 报工与工艺参数闭环数据总线
  • 告别内存焦虑:用STM32H7的FMC+SDRAM给项目扩容,保姆级CubeMX配置避坑指南
  • 终极开源AI自瞄指南:5分钟完成YOLOv8智能瞄准部署
  • 时序数据库选型:吞吐、压缩与查询延迟的均衡之术
  • 别再为hiprint表格数据绑定头疼了!Vue项目里一个关键配置让你秒通
  • 嵌入式开发实战:深度解析MCU模拟与数字接口电气特性与设计
  • Claude归零层:语义保真度校验环的工程级移除与确定性重构
  • 9种字重完整字体库:Outfit字体解决品牌视觉统一难题的终极指南
  • context - mode:为AI编程减负,降成本98%、提记忆力至3小时,GitHub获超1.5万Star!
  • 嵌入式硬件设计基石:从MCU数据手册电气特性到可靠系统实现
  • Win11下MATLAB 2021b连接USRP X310避坑指南(解决UHD 3.15.0报错)
  • 15天Python入门系列 · 序
  • 收藏!程序员转行AI:大模型应用开发入门指南,轻松拿高薪!
  • 【简单易懂】电脑端 AI 工具 OpenClaw 解压安装与运行指南(包含安装包)