↓ 跳过正文
  1. 文章/
  2. 2026 年文章归档/

Linux 系统级代理环境变量一次讲清

·1162 字·3 分钟
作者
吾便宜

在 Linux 上配代理,很多人第一步就栽在环境变量上:curl 能走代理,apt 却不行;终端里 git clone 飞快,浏览器却纹丝不动。问题往往不在代理本身,而在环境变量没配对。

Linux 终端代理环境变量配置示意

插图来源:Storyset

清单一:四个核心变量各管什么
#

  • http_proxy:管 HTTP 请求的代理。注意名字里带 http,但它实际管的是"走 HTTP 协议发出的请求"。
  • https_proxy:管 HTTPS 请求的代理。日常上网绝大多数流量是 HTTPS,所以这个变量最关键,漏配它等于没配。
  • all_proxy:兜底变量。上面两个没设置时,很多工具会退回到 all_proxy,适合图省事时只写一个。
  • no_proxy:白名单。写在这里的域名或 IP 不走代理,比如 localhost、局域网地址。

清单二:大小写之争
#

Linux 约定俗成用小写(http_proxy),但部分软件只认大写(HTTP_PROXY)。最稳妥的做法是大小写各写一份,多两行命令的事,省得以后一个个排查:

export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"

端口换成你自己客户端的本地监听端口,常见的是 7890、10809 之类,具体看你用的哪款客户端。

清单三:哪些软件认,哪些不认
#

认环境变量的(以命令行工具为主):

  • curl、wget:认 http_proxy / https_proxy
  • git:既认自身的 http.proxy 配置,也认环境变量
  • ssh:不认,需要走 ProxyCommand 或 nc 配合

不认环境变量的:

  • apt / yum:要单独写配置文件,apt 是 /etc/apt/apt.conf.d/ 下加 Acquire::http::Proxy
  • pip、npm:各有自己的 proxy 配置项
  • 浏览器(Chrome、Firefox):走自己的代理设置或系统代理
  • 大部分图形界面软件:走桌面环境的网络代理设置

所以"终端能用、浏览器不能用"是正常现象,不是代理坏了。想了解各平台客户端的通用配置思路,可以看这篇客户端配置总览。

清单四:no_proxy 的正确写法
#

export no_proxy="localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8"
export NO_PROXY="localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8"

要点:逗号分隔、不加空格;localhost 和 127.0.0.1 一定要写进去,否则本地服务会被代理绕一圈,轻则变慢,重则连不上。

清单五:让配置永久生效
#

export 只对当前终端会话有效,关掉终端就没了。想永久生效:

  • 只给自己用:写进 ~/.bashrc 或 ~/.zshrc 末尾,改完 source 一下
  • 给全系统所有用户:写进 /etc/environment(注意这里不用加 export,直接写 http_proxy=...)
  • 只给某条命令临时用:https_proxy=... curl example.com,变量写在命令前面

清单六:排查三步走
#

  1. env | grep -i proxy —— 先看变量到底生效了没有
  2. curl -v https://www.google.com —— 看请求是不是真的走了代理
  3. 代理客户端本身在不在运行、端口对不对得上

很多"Linux 下代理失灵"最后查出来都是变量名打错一个字母,或者大小写没配全。

如果你用的是 WSL,情况更特殊——WSL2 和 Windows 宿主机网络是隔离的,localhost 并不互通,具体做法看这篇 WSL 里走代理。另外配好代理后建议顺手检查一下有没有 DNS 泄露和 WebRTC 泄露,环境变量可管不了这两样。

相关文章

iOS 锁屏一键开关代理的两种方法

·1158 字·3 分钟
插图来源:Storyset 每天开关代理好几次,每次都要解锁、找到 App、点进开关,烦。两种一键方案,按需取用。 方案一:控制中心长按 VPN 开关 # 下拉打开控制中心,长按(或重按)左上角的网络模块。 会展开出「VPN」按钮,点一下就能开关系统 VPN。 限制:它开关的是系统 VPN 通道,相当于代理的总闸;如果你用的是 Shadowrocket 这类 App,它能用;但它不能切换节点,也不能切换规则/全局模式。 适合场景:临时需要整个关掉代理(比如用银行 App),点一下就行。 方案二:快捷指令做个切换按钮 # 打开「快捷指令」App,新建快捷指令,添加操作「设定 VPN」(或对应代理 App 提供的操作,如 Shadowrocket 的"切换开关")。 把这个快捷指令添加到桌面小组件或锁屏小组件,一点即切。 进阶:配合「自动化」,设置连上公司 Wi-Fi 自动关代理、连上家里 Wi-Fi 自动开代理。 限制:快捷指令能做的动作取决于 App 是否提供了 Siri 快捷方式支持;部分小众客户端没有,得手动进 App。 两个方案的取舍 # 只想快速"关一下/开一下":用方案一,零配置。 想连切换模式、换节点一起做:用方案二,一次配好天天省事。 提醒:频繁开关可能导致部分 App 的网络状态卡住(比如微信转圈),开关后等几秒再用。 补充 checklist # 确认代理 App 已在系统 VPN 配置里授权(设置 → 通用 → VPN 与设备管理)。 快捷指令用到的 App 操作,先手动进 App 确认开关本身是好的。 自动化触发别设太灵敏(比如"离开家"这类地理围栏可能误触发),建议用连 Wi-Fi 名称触发。 和家人共用设备时,桌面小组件记得放在顺手的位置,不然配了也想不起来用。 相关阅读:全平台客户端配置总览;如果快捷指令里找不到你的客户端,先确认订阅导入成功且 App 正常工作;三种代理模式的区别见规则/全局/直连模式怎么选。