no_proxy 是什么?
一句话: no_proxy 是环境变量,用来指定「不走代理、直接直连」的域名/IP/网段。
- 背景:先看懂代理环境变量
系统里常用三个代理环境变量:
- http_proxy :HTTP 请求走的代理地址
- https_proxy :HTTPS 请求走的代理地址
- no_proxy :例外名单,匹配到的地址不经过代理,直接本机直连
常见格式示例:
bash
export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890 export no_proxy="localhost,127.0.0.1,10.0.0.0/8,.internal.example.com"
- no_proxy 匹配规则(重点)
不同工具(curl、wget、git、npm、apt、Docker、系统网络)略有差异,但通用规则:
① 精确匹配域名 / IP
plaintext
no_proxy=localhost,127.0.0.1,192.168.1.1
访问这些地址不走代理。
② 后缀通配(最常用)
以 . 开头表示所有子域名都不走代理:
plaintext
no_proxy=.internal.example.com
则:
- a.internal.example.com ✅ 不走代理
- b.internal.example.com ✅ 不走代理
- internal.example.com 本身要看工具是否兼容(部分工具会自动包含)
③ CIDR 网段(IP 段)
plaintext
no_proxy=10.0.0.0/8,192.168.0.0/16
表示内网整个网段都直连,不走代理。
- 为什么需要 no_proxy?
典型场景:
- 你开了全局代理(科学上网/公司统一代理) 2. 但访问本地服务、内网服务、K8s、数据库、公司内部域名不能走代理,否则:- 连不上
- 超时
- 网络报错、权限问题
比如:
- 访问 localhost:8080 、 127.0.0.1
- 访问内网数据库 192.168.x.x
- 公司内部域名 *.corp.local
-
常见坑
-
大小写问题 Linux 环境变量是小写 no_proxy ,Windows 很多程序识别大写 NO_PROXY 。 最好同时设置:bash
export no_proxy=... export NO_PROXY=... 2. 逗号分隔,不要加空格 ❌ 错误: no_proxy="localhost, 127.0.0.1" ✅ 正确: no_proxy="localhost,127.0.0.1" 3. 部分程序不读系统环境变量(比如某些 Java、Go 程序、浏览器),需要单独配置代理例外。
- 快速配置示例(Linux/macOS)
bash
全局代理
export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890
不走代理:本地 + 内网 + 公司内部域名
export no_proxy="localhost,127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.corp.local" export NO_PROXY="$no_proxy"
需要我给你一份Windows / Git / Docker / npm / apt 各自的 no_proxy 配置模板吗?