如何用 VSCODE_PROXY_URI 让 code-server 的 Ports 面板链接指向自己的代理域名?
2026/9/10 7:36:20 网站建设 项目流程

如何用 VSCODE_PROXY_URI 让 code-server 的 Ports 面板链接指向自己的代理域名?

【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server

在 code-server 中运行 Web 服务时,浏览器里检测到的端口(3000、8080 等)会在 Ports 面板中生成链接,默认指向 code-server 内置的子路径代理(/proxy/<port>)。如果你的部署里每个端口已经有独立的子域名(例如3000.your-domain.tld),希望 Ports 面板直接给出https://3000.your-domain.tld这样的链接,只需要在 code-server 进程中设置VSCODE_PROXY_URI环境变量。设置后,模板中的{{port}}会被实际应用监听的端口号替换,例如 docs/guide.md 给出的示例:

VSCODE_PROXY_URI=https://{{port}}.kyle.dev

当 code-server 检测到同机 3000 端口有应用运行时,Ports 面板会创建指向https://3000.kyle.dev的链接,而不是内置的子路径代理。

前提:你自己的代理域名要能工作

按 Setup Guide 中 “Using a subdomain” 一节的说明,子域名方式需要你准备好:

  • DNS 记录:为每个要访问的端口配置 A 记录(如3000.<domain>8080.<domain>),或者如果域名服务商支持通配符 DNS,直接配置*.<domain>
  • TLS 证书:为这些子域名配置证书,可以是*.<domain>的通配证书,也可以是每个端口单独一张;
  • 负责把*.your-domain.tld流量转发到对应端口的代理(如 Caddy/NGINX 反向代理),这部分属于你自己的基础设施,code-server 只负责生成链接。

code-server 本身不需要为这个功能添加启动参数,它是纯环境变量配置。

设置 VSCODE_PROXY_URI

让 code-server 进程启动时带上这个环境变量即可,替换方式由你控制环境变量的一贯做法决定,例如在启动命令前设置:

VSCODE_PROXY_URI='https://{{port}}.your-domain.tld' code-server

或者在管理该进程的环境(systemd 服务的Environment=、容器编排的 env 配置等)中写入同一行,然后重启 code-server。两点注意:

  • {{port}}是模板占位符,必须原样保留在值里,由 code-server 在转发端口时替换为实际端口号,不要自己填死某个端口;
  • 如果当前实例后面还有反向代理,子域名方式依赖 Host 头(--proxy-domain机制同样如此),确保你的反向代理会转发该信息。

验证是否生效

  1. 启动日志。code-server 启动时会把配置打进日志,源码 src/node/main.ts 中的逻辑是:

    Using proxy URI in PORTS tab: https://{{port}}.your-domain.tld

    看到这条日志说明环境变量已被进程读取。

  2. 终端内检查VSCODE_PROXY_URI同时注入到 code-server 的集成终端环境(见 patches/proxy-uri.diff),打开集成终端执行:

    printenv VSCODE_PROXY_URI

    输出应为你设置的值;项目 e2e 测试 test/e2e/terminal.test.ts 用的正是printenv VSCODE_PROXY_URI做校验。

  3. Ports 面板链接。启动一个监听固定端口的应用(文档示例用python3 -m http.server),确认 Ports 面板中该行显示的链接是https://<端口>.your-domain.tld,并且浏览器访问该地址能到达你的代理再到应用,而不是.../proxy/<port>形式的路径。

可选分支:用相对路径而非域名

如果你没有独立域名,只是想换个链接形式,相对路径同样被支持:

VSCODE_PROXY_URI='./proxy/{{port}}'

这样生成的链接会相对于当前 code-server 的地址解析。此写法来自 docs/guide.md “Using your own proxy” 一节的说明。

限制与边界

  • VSCODE_PROXY_URI改变的是 Ports 面板和扩展(asExternalUri等打开本地端口链接的行为)所生成的 URL 模板,应用仍然运行在 code-server 所在机器上;它不负责把流量路由到你的域名,路由由你自己的 DNS 与代理完成。
  • 内置子路径代理(/proxy/<port>)依然可用,设置该变量不会关闭它;不设置时默认模板就是<code-server 根路径>/proxy/{{port}}/(见 patches/proxy-uri.diff 中proxyEndpointTemplate的默认值)。
  • 应用自身的路径问题与链接指向无关:如果你的应用依赖绝对路径,参考 Setup Guide 中关于/absproxy与相对 URL 的小节处理应用侧配置。

【免费下载链接】code-serverVS Code in the browser项目地址: https://gitcode.com/GitHub_Trending/co/code-server

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询