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

GitLab Web IDE连接失败:WebSocket错误码1006求助

排查GitLab Web IDE连接Ubuntu VPS的WebSocket 1006错误

问题描述

尝试将Ubuntu VPS连接至GitLab Web IDE时,遇到错误:
The workbench failed to connect to the server (Error: WebSocket close with status code 1006)

已完成的配置操作:

  • Nginx配置如下:
server {
server_name remote.demo.com;

location / {
proxy_pass http://localhost:3443;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Accept-Encoding gzip;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
}
}
  • Cloudflare已启用Websockets功能
  • 已完成GitLab官方远程开发的证书生成步骤

排查与解决步骤

1. 验证VPS本地WebSocket服务可用性

先绕过Nginx和Cloudflare,直接测试VPS本地3443端口的WebSocket服务是否正常:

# 安装websocket客户端工具
sudo apt install -y wscat
# 连接本地服务
wscat -c ws://localhost:3443

如果连接失败,说明GitLab远程开发服务本身未正常启动,检查服务状态:

# GitLab Omnibus部署方式
sudo gitlab-ctl status
# Docker部署方式(替换容器名)
docker logs <gitlab-remote-dev-container-name>

2. 完善Nginx的WebSocket代理配置

现有配置缺少WebSocket超时与缓存控制设置,容易导致连接被主动断开,补充以下内容到location /块中:

# 延长WebSocket连接超时时间
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
# 禁用WebSocket请求的缓存
proxy_cache_bypass $http_upgrade;
proxy_no_cache $http_upgrade;

修改后重启Nginx:

sudo nginx -t && sudo systemctl reload nginx

3. 检查Cloudflare的拦截规则

即使启用了Websockets,Cloudflare的部分功能可能阻断连接:

  • 若域名使用Cloudflare代理模式,暂时切换为DNS only测试是否恢复连接
  • 禁用"Bot Fight Mode"或"Super Bot Fight Mode",这类功能可能误拦截WebSocket请求
  • 检查"防火墙规则"是否存在针对WebSocket的拦截策略
  • 确认SSL/TLS模式设置为Full或Full (strict),避免证书不匹配导致连接中断

4. 确认端口与防火墙设置

  • 开放VPS本地防火墙的3443端口:
sudo ufw allow 3443/tcp
  • 若使用Cloudflare代理自定义端口,需在Cloudflare后台"网络"->"端口规则"中添加对应端口的放行规则

5. 补全Nginx SSL配置

GitLab Web IDE要求HTTPS连接,现有配置未包含SSL部分,补充证书加载与HTTPS监听配置:

server {
    listen 443 ssl;
    server_name remote.demo.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    location / {
        proxy_pass http://localhost:3443;
        proxy_set_header Host $host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Accept-Encoding gzip;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        # 新增超时与缓存控制
        proxy_connect_timeout 7d;
        proxy_send_timeout 7d;
        proxy_read_timeout 7d;
        proxy_cache_bypass $http_upgrade;
        proxy_no_cache $http_upgrade;
    }
}

# HTTP重定向到HTTPS
server {
    listen 80;
    server_name remote.demo.com;
    return 301 https://$host$request_uri;
}

修改后验证配置并重启Nginx:

sudo nginx -t
sudo systemctl reload nginx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 03:55:17