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

如何修改Selenium VNC的WebSocket端口,在K8s Nginx Ingress下将4444改为80?

问题根因

Selenium Grid前端生成VNC WebSocket连接地址时,默认读取路由器配置的监听端口生成连接串,仅修改SE_ROUTER_PORT为80无法覆盖完整配置,同时Ingress-Nginx需要开启WebSocket支持、正确处理请求头才能正常转发连接。

具体解决步骤

1. 修正Selenium Router 环境变量配置

除了已配置的SE_ROUTER_PORT=80,补充以下两个环境变量:

  • SE_ROUTER_HOST:填写Ingress对外暴露的Selenium Grid访问域名(例如selenium-grid.example.com)
  • SE_GRID_UI_VNC_PUBLIC_URL:直接强制指定VNC WebSocket的地址前缀,HTTP协议格式为ws://<你的域名>/wd/hub,HTTPS协议格式为wss://<你的域名>/wd/hub,该配置优先级高于端口和主机配置,可以直接避免生成带4444端口的连接地址

注意:如果Ingress开启了HTTPS,必须用wss前缀,否则会被浏览器的混合内容规则拦截

2. 配置Ingress-Nginx支持WebSocket转发

在Selenium Grid对应的Ingress资源配置中添加以下annotations,开启WebSocket支持同时延长超时时间避免VNC连接意外断开:

annotations:
  nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
  nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
  nginx.ingress.kubernetes.io/upgrade: "websocket"
  nginx.ingress.kubernetes.io/connection-upgrade: "$http_upgrade"

Ingress后端只需正常指向Selenium Router Service的4444端口即可,不需要修改Service本身的端口配置。

3. 验证配置生效

重启Selenium Router Pod让环境变量生效后,清空浏览器缓存重新访问Grid页面,查看网络请求中的WebSocket连接地址是否已经改为80端口,确认连接状态正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:45:02