NO_PROXY是macOS终端中控制代理绕过的唯一可靠机制;需用英文逗号分隔、点号前缀匹配子域名(如.example.com),大小写不敏感但推荐大写,不可含空格,临时用export NO_PROXY="...",持久化写入~/.zshrc并source生效。
在 macos 的 shell 环境中,no_proxy(或等价的 no_proxy)是控制哪些地址绕过代理、直连的关键变量。它不依赖图形界面设置,而是由终端命令行工具(如 curl、git、npm、pip、wget)直接读取并生效。
怎么正确配置 no_proxy
no_proxy 支持逗号分隔的域名/IP/网段,且点号前缀表示子域名匹配(例如 .example.com 匹配 api.example.com 和 dev.test.example.com),但 example.com 只匹配精确主机名。
- 常见写法示例:
export NO_PROXY="localhost,127.0.0.1,.local,.internal,192.168.0.0/16" - 大小写不敏感,但推荐统一用大写(
NO_PROXY)以兼容更多工具 - 必须用英文逗号分隔,中间不能有空格(
"localhost,127.0.0.1"✅;"localhost, 127.0.0.1"❌) - 部分工具(如较新版本的 curl)支持 CIDR 表达式,但 git、npm 默认只识别域名和 IP
临时取消代理(当前终端有效)
运行以下命令即可立即让当前窗口跳过代理访问指定目标:
-
unset NO_PROXY—— 清除变量,所有请求都可能走代理(除非其他变量也清了) -
export NO_PROXY="localhost,127.0.0.1"—— 仅放行本地地址,其余仍走代理 -
export NO_PROXY="*"—— 某些工具支持通配符全 bypass(非标准,不推荐依赖)
永久取消或重设 no_proxy(推荐方式)
编辑你的 shell 配置文件(macOS Catalina 及之后默认为 zsh):
- 打开配置:
nano ~/.zshrc - 查找包含
NO_PROXY或no_proxy的行,整行删除(不要只注释) - 若要保留基础绕过,添加一行:
export NO_PROXY="localhost,127.0.0.1,.local" - 保存后执行:
source ~/.zshrc
验证是否生效
配置完成后,用这几条命令交叉确认:
-
echo $NO_PROXY—— 应显示你设定的值,或为空(表示未设置) -
curl -v https://httpbin.org/ip 2>&1 | grep "Connected to"—— 若访问的是内网地址(如curl http://my.service.local),应显示连接到真实 IP,而非代理地址 -
git ls-remote https://github.com/example/repo.git—— 若 GitHub 在 NO_PROXY 列表中(如写了.github.com),应直连不报超时


















