wget不识别no_proxy通配符,怎么办?
问题现象
在wget 1.20以下版本中,no_proxy环境变量配置的通配符(如*.obs.com)不生效,导致下载请求仍然通过代理服务器。
- no_proxy:环境变量,用于指定无需通过代理服务器访问的域名列表。
- 通配符:如*,可以匹配任意字符的符号(例如*.obs.com匹配a.obs.com、b.obs.com等)。
原因分析
- wget 1.20以下版本对no_proxy通配符的支持存在缺陷,无法正确匹配*.obs.com格式的域名。
- 部分系统(如RHEL 8)的wget版本会忽略no_proxy中的通配符配置。
解决方案
- 配置完整域名
在no_proxy中列出需要跳过代理的完整域名(如no_proxy='obs.com,sub.obs.com'),避免使用通配符。
# 示例:临时设置环境变量 export no_proxy="obs.com,sub.obs.com"
- 使用curl替代
curl命令支持no_proxy环境变量,且语法与wget兼容。
curl -O https://xxx.obs.com/file # 直接下载,绕过代理
- 升级wget版本
升级wget版本至1.20以上,如果升级困难,建议更换为预装wget 1.20以上版本的镜像。
临时方案:直接禁用代理,通过清除代理环境变量(unset http_proxy https_proxy)可强制所有域名不经过代理。
验证通配符问题是否解决
- 检查当前代理配置。
env | grep -i proxy
- 查看下载日志,确认是否绕过代理。
wget --debug https://xxx.obs.com/file