在Linux系统中配置代理服务器是日常开发、运维或科学研究中常见的需求,尤其是在需要访问外部网络资源或绕过网络限制时,代理配置方式多样,可根据使用场景(全局代理、特定工具代理、容器代理等)选择合适的方法,以下从环境变量配置、系统级代理、工具型代理及容器代理四个维度详细说明操作步骤。
环境变量代理(适用于命令行工具)
环境变量代理是最基础的配置方式,适用于支持HTTP_PROXY
、HTTPS_PROXY
等环境变量的命令行工具(如curl
、wget
、git
、pip
等),配置分为临时生效和永久生效两种。
临时生效(当前终端会话)
直接在终端执行以下命令(以HTTP代理http://127.0.0.1:7890
为例,HTTPS代理同理):
export HTTP_PROXY="http://127.0.0.1:7890" export HTTPS_PROXY="http://127.0.0.1:7890" export FTP_PROXY="http://127.0.0.1:7890" # 可选,FTP协议代理 export NO_PROXY="localhost,127.0.0.1,*.local" # 不走代理的地址(逗号分隔)
执行后,当前终端会话下的支持环境变量的工具均会通过代理访问网络,关闭终端后配置失效。
永久生效(用户级别)
将环境变量写入用户配置文件(如~/.bashrc
、~/.zshrc
或~/.profile
),以~/.bashrc
为例:
echo 'export HTTP_PROXY="http://127.0.0.1:7890"' >> ~/.bashrc echo 'export HTTPS_PROXY="http://127.0.0.1:7890"' >> ~/.bashrc echo 'export NO_PROXY="localhost,127.0.0.1,*.local"' >> ~/.bashrc source ~/.bashrc # 重新加载配置文件
此后,用户登录终端时会自动加载代理配置。
环境变量代理总结表
环境变量名 | 用途 | 示例 |
---|---|---|
HTTP_PROXY |
HTTP协议代理 | http://127.0.0.1:7890 |
HTTPS_PROXY |
HTTPS协议代理 | http://127.0.0.1:7890 |
FTP_PROXY |
FTP协议代理 | http://127.0.0.1:7890 |
NO_PROXY |
不走代理的地址(逗号分隔) | localhost,127.0.0.1,*.local |
系统级代理(适用于桌面环境)
对于图形化界面的Linux发行版(如Ubuntu、Fedora等),可通过系统设置配置全局代理,使所有应用程序(如浏览器、下载工具等)自动走代理。
GNOME桌面环境(Ubuntu默认)
- 打开“设置”→“网络”→“代理”,选择“手动代理”。
- 填写HTTP代理地址(如
0.0.1
)和端口(如7890
),勾选“为HTTPS同时使用代理”(若代理支持HTTPS)。 - 若代理需要认证,勾选“使用身份验证”并输入用户名和密码。
- 点击“应用”使配置生效。
KDE桌面环境(Fedora默认)
- 打开“系统设置”→“网络代理”,选择“手动代理”。
- 分别配置HTTP、HTTPS、SOCKS5等代理的地址和端口。
- 在“排除的主机”中添加不需要代理的地址(如
NO_PROXY
)。 - 点击“应用”保存配置。
命令行配置(通用)
对于无图形界面的服务器,可通过修改/etc/environment
文件实现系统级代理(所有用户生效):
sudo echo "HTTP_PROXY="http://127.0.0.1:7890"" >> /etc/environment sudo echo "HTTPS_PROXY="http://127.0.0.1:7890"" >> /etc/environment sudo echo "NO_PROXY="localhost,127.0.0.1,*.local"" >> /etc/environment
重启系统或重新登录后生效。
工具型代理(针对特定程序)
某些工具(如apt
、yum
、Proxychains
)需要单独配置代理,无法通过环境变量或系统设置生效。
apt
(Debian/Ubuntu)
创建代理配置文件:
sudo nano /etc/apt/apt.conf.d/proxy.conf ``` 根据代理类型调整):
Acquire::http::Proxy “http://127.0.0.1:7890”;
Acquire::https::Proxy “http://127.0.0.1:7890”;
#### 2. `yum`(CentOS/RHEL)
编辑`/etc/yum.conf`文件,在末尾添加:
```ini
proxy=http://127.0.0.1:7890
proxy_username=用户名 # 可选,代理认证用户名
proxy_password=密码 # 可选,代理认证密码
Proxychains
(强制指定程序走代理)
Proxychains
可将任意程序通过代理转发,适用于不支持环境变量的工具。
- 安装:
sudo apt install proxychains4
(Ubuntu)或sudo yum install proxychains4
(CentOS)。 - 配置:编辑
/etc/proxychains4.conf
,找到[ProxyList]
部分,去掉注释并添加代理(以SOCKS5为例):[ProxyList] socks5 127.0.0.1 1080
- 使用:在命令前加
proxychains4
,如proxychains4 curl ipinfo.io
,此时curl
会通过SOCKS5代理访问网络。
Docker容器代理
若Docker容器需要访问外部网络,需分别配置Docker守护进程代理和容器内代理。
Docker守护进程代理
创建~/.docker/daemon.json
文件(若不存在需手动创建):
{ "proxies": { "http": "http://proxy.example.com:8080", "https": "http://proxy.example.com:8080" } }
重启Docker服务:sudo systemctl restart docker
。
容器内代理
启动容器时通过-e
传递环境变量:
docker run -e HTTP_PROXY="http://proxy.example.com:8080" -e HTTPS_PROXY="http://proxy.example.com:8080" ubuntu:20.04
或挂载代理配置文件到容器内(适用于多容器场景)。
相关问答FAQs
Q1:如何验证代理是否生效?
A:可通过以下方式验证:
- 命令行工具:执行
curl -x http://127.0.0.1:7890 ipinfo.io
,若返回的IP地址为代理服务器的IP而非本地IP,则代理生效。 - 浏览器:访问
ipinfo.io
查看IP地址,或使用浏览器插件(如“Proxy SwitchyOmega”)切换代理模式。 - 系统级代理:在终端执行
env | grep -i proxy
,检查环境变量是否正确加载。
Q2:代理设置了但某些程序(如Git)不走代理怎么办?
A:可能是程序未读取环境变量或需要单独配置。
- Git需单独配置代理:
git config --global http.proxy "http://127.0.0.1:7890" git config --global https.proxy "http://127.0.0.1:7890"
- 若程序不支持环境变量,可使用
Proxychains
强制走代理(如proxychains4 git clone https://github.com/user/repo.git
)。 - 检查
NO_PROXY
配置,确保目标地址未被排除(如github.com
未在NO_PROXY
列表中)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35376.html