Skip to content

Remote Gateway CORS 配置说明

概述

Remote Gateway 服务支持灵活的 CORS(跨域资源共享)配置,可以通过环境变量控制哪些域名可以访问远程桌面网关。


环境变量

1. CORS_ALLOWED_ORIGINS

类型: 字符串(逗号分隔) 默认值: 空 描述: 额外允许的 CORS 来源,支持多个域名(逗号分隔)

示例:

dotenv
CORS_ALLOWED_ORIGINS=https://yourdomain.com,https://www.yourdomain.com,https://admin.yourdomain.com

2. CORS_ALLOW_ALL

类型: 布尔值(truefalse默认值: false描述: 是否允许所有来源访问(仅用于开发环境,生产环境强烈不推荐

示例:

dotenv
CORS_ALLOW_ALL=true  # ⚠️ 仅用于开发/测试

3. FRONTEND_URLMAIN_BACKEND_URL

类型: 字符串(URL) 默认值:

  • FRONTEND_URL: http://localhost:5173
  • MAIN_BACKEND_URL: http://localhost:3001

描述: 默认允许的前端和后端 URL,始终会被添加到 CORS 白名单


配置示例

Docker Compose 配置

编辑 docker-compose.yml 文件中的 remote-gateway 服务:

yaml
remote-gateway:
  image: ghcr.io/silentely/nexus-terminal-remote-gateway:latest
  environment:
    GUACD_HOST: localhost
    GUACD_PORT: 4822
    FRONTEND_URL: http://frontend
    MAIN_BACKEND_URL: http://backend:3001

    # 添加额外的允许域名
    CORS_ALLOWED_ORIGINS: https://yourdomain.com,https://www.yourdomain.com

    # 开发模式(可选,不推荐生产使用)
    # CORS_ALLOW_ALL: true

本地开发配置

创建或编辑 .env 文件:

dotenv
FRONTEND_URL=http://localhost:5173
MAIN_BACKEND_URL=http://localhost:3001
CORS_ALLOWED_ORIGINS=http://localhost:8080
CORS_ALLOW_ALL=false

常见问题

Q1: 浏览器控制台显示 CORS 错误怎么办?

情况 1: 错误域名不是你的应用

如果看到类似 keylol.cloudflareaccess.comssh.cosr.eu 的域名:

  • ✅ 这些错误不是来自你的应用代码
  • ✅ 通常是浏览器扩展、广告拦截器或代理软件尝试加载资源
  • ✅ 这些错误不影响应用功能,可以安全忽略

排查方法:

  1. 在无痕窗口中测试(禁用所有扩展)
  2. 禁用广告拦截器(如 uBlock Origin、AdGuard)
  3. 检查 VPN 或代理软件

情况 2: 错误域名是你的应用

如果看到自己的域名被 CORS 拦截:

  1. 检查 docker-compose.yml 中的 FRONTEND_URLMAIN_BACKEND_URL 是否正确
  2. 如需支持额外域名,配置 CORS_ALLOWED_ORIGINS
  3. 重启 remote-gateway 服务:docker-compose restart remote-gateway

Q2: 为什么我的自定义域名访问不了?

确保在 CORS_ALLOWED_ORIGINS 中添加了你的域名:

yaml
environment:
  CORS_ALLOWED_ORIGINS: https://terminal.example.com,https://www.example.com

注意:

  • ✅ 包含协议(http://https://
  • ✅ 不要添加尾部斜杠
  • ✅ 多个域名用逗号分隔,不要有空格

Q3: 开发时能临时允许所有来源吗?

可以,但仅限开发环境

yaml
environment:
  CORS_ALLOW_ALL: true # ⚠️ 生产环境禁用!

生产环境必须明确配置允许的域名,不能使用 CORS_ALLOW_ALL=true


安全建议

  1. 最小权限原则: 仅允许必要的域名访问
  2. 生产环境: 禁用 CORS_ALLOW_ALL
  3. HTTPS: 生产环境使用 HTTPS 协议
  4. 定期审查: 定期检查允许的域名列表

日志示例

正常启动日志

[Remote Gateway] CORS 允许的来源: http://frontend, http://backend:3001, https://yourdomain.com

开发模式日志

[Remote Gateway] ⚠️ CORS 允许所有来源(开发模式)

更多信息

IP 地理位置数据由 IPLocate 提供