问题背景
目前我们自己在内网中部署了一个代码仓库gitea,其地址为192.168.0.232:300。但是发现,在我的开着代理的电脑上(Windows 11系统)通过浏览器访问是没有问题的,但是想直接在命令行中执行git clone等操作就不行,总是报502错误。但是我又不想把代理关掉或者设置no_proxy环境变量,因为我要访问外网,也就是希望这样:
- 外网访问需要走本地代理(例如
127.0.0.1:7890) - 内网 Gitea(例如
192.168.0.232:3000)应该直连
如果直接设置系统级 no_proxy,有时会影响整体代理行为,导致外网访问异常。
方式
可以不必依赖系统环境变量 no_proxy。可以使用 Git 的"按 URL 精确配置"能力:
- 全局保留默认代理(给外网)
- 仅对内网 Gitea 的 URL 设置
proxy =(空值,表示不走代理)
这样可实现"外网走代理,内网直连"。
配置方法
1) 保留全局代理(如果你已经有可跳过)
powershell
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
2) 为内网 Gitea 添加 URL 级别直连规则(关键)
powershell
git config --global http."http://192.168.0.232:3000".proxy ""
等价配置会写入 ~/.gitconfig:
ini
[http "http://192.168.0.232:3000"]
proxy =

验证
查看代理相关配置来源
powershell
git config --show-origin --get-regexp "^http\.proxy$|^https\.proxy$|^http\..*\.proxy$|^https\..*\.proxy$"
预期同时看到:
- 全局
http.proxy/https.proxy - URL 专用
http.http://192.168.0.232:3000.proxy(空值)
验证 gitea 可访问
powershell
git ls-remote gitea
能返回 HEAD 和分支列表即表示访问正常。
可选:仅在单仓库生效(而非全局)
如果只想针对当前仓库生效,去掉 --global:
powershell
git config http."http://192.168.0.232:3000".proxy ""
此时配置写入当前仓库的 .git/config。
排查建议
- 先确认内网连通性(
ping 192.168.0.232)仅代表 ICMP 通。 - 再确认服务端口可达(
192.168.0.232:3000)。 - 若浏览器可访问但 Git 不可访问,重点检查 Git 的
http.*proxy配置优先级。 - 若用了代理软件规则(PAC/TUN/系统代理),也要确认没有把内网地址错误转发。
回滚命令
删除全局 URL 专用规则:
powershell
git config --global --unset-all http."http://192.168.0.232:3000".proxy
删除仓库级 URL 专用规则:
powershell
git config --unset-all http."http://192.168.0.232:3000".proxy
这个方案的核心是"精确绕过某个 Git URL 的代理",比全局 no_proxy 更细粒度,也更不容易影响外网访问。