no_proxy介绍

11 阅读2分钟

no_proxy 是什么?

一句话: no_proxy  是环境变量,用来指定「不走代理、直接直连」的域名/IP/网段。

 

  1. 背景:先看懂代理环境变量

系统里常用三个代理环境变量:

  •  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"  

 

  1. 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  

表示内网整个网段都直连,不走代理。

 

  1. 为什么需要 no_proxy?

典型场景:

1. 你开了全局代理(科学上网/公司统一代理) 2. 但访问本地服务、内网服务、K8s、数据库、公司内部域名不能走代理,否则:- 连不上

  • 超时
  • 网络报错、权限问题

比如:

  • 访问  localhost:8080 、 127.0.0.1 
  • 访问内网数据库  192.168.x.x 
  • 公司内部域名  *.corp.local 

 

  1. 常见坑

1. 大小写问题 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 程序、浏览器),需要单独配置代理例外。

 

  1. 快速配置示例(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 配置模板吗?