背景
在中国大陆,GitHub、Homebrew、npm 等开发工具的海外源经常无法直连。最干净的解决方案:本地跑一个代理客户端(Clash Verge / ClashX Pro / Surge 等),然后在终端里配置环境变量让所有 CLI 工具自动走代理。
一句话配置
编辑 ~/.zshrc,加入:
1 | # 代理 |
然后 source ~/.zshrc 即可生效。7897 换成你的代理客户端实际端口(Clash 默认 7890/7897,Surge 默认 6152 等)。
原理
终端的工作流程:
1 | Tabby / iTerm2 / VS Code Terminal |
所有从终端启动的程序都会继承 shell 的环境变量,所以只需配置一次,所有终端和所有 CLI 工具通用。
验证
1 | # 看看环境变量是否生效 |
特殊情况
brew tap 被墙 (HTTPS 克隆失败)
brew tap 默认走 HTTPS 克隆,国内容易被墙。改用 SSH:
1 | git clone [email protected]:mcxen/homebrew-qx.git /opt/homebrew/Library/Taps/mcxen/homebrew-qx |
git push 超时
Github 项目 remote 换成 SSH:
1 | git remote set-url origin [email protected]:用户名/仓库名.git |
VS Code Tasks
如果 VS Code 的 Task Runner 不走终端环境变量,在 .vscode/tasks.json 的 task 配置里加 "options": {"env": {"http_proxy": "..."}}。
no_proxy 的作用
no_proxy 保证内网地址不走代理直连:
- 本地开发服务器(
localhost:1420、127.0.0.1:3000) - NAS 内网地址(
10.0.0.x) - 局域网路由器(
192.168.x.x)
需要额外添加用逗号分隔:
1 | export no_proxy="$no_proxy,10.0.0.0/24,192.168.0.0/16" |
推荐实践
如果要临时开关代理,在 ~/.zshrc 加两个函数:
1 | proxy() { |
用法:
1 | proxy # 开 |
短链接
本文永久链接: b.xpai.uk/proxy