在Linux下设定系统代理方法

Ubuntu

系统代理

首先,验证代理是否有效:

curl -x http://<proxy-host>:<proxy-port> http://example.com

在.bashrc中添加如下内容以设定代理:

# enable proxy
export http_proxy_value="http://your_proxy.com"
alias proxy_on='export http_proxy=$http_proxy_value; export HTTP_PROXY=$http_proxy_value; export https_proxy=$http_proxy_value; export HTTPS_PROXY=$http_proxy_value; echo "Proxy enabled: $http_proxy_value"'
# disable proxy
alias proxy_off='unset http_proxy; unset https_proxy; unset HTTP_PROXY; unset HTTPS_PROXY; echo "Proxy disabled"'

启用代理:

proxy_on

关闭代理:

proxy_off

验证:

curl http://example.com

注意,这里不能通过ping测试代理生效情况,因为ping走的是ICMP协议,但代理是http(s)。因此,即便设置了代理,也可能无法ping通目标网站。

Docker代理

上面的方法设置的是shell的代理,但docker是系统服务,并不会继承.bashrc中的设定,因此,需要单独为docker配置代理。

sudo mkdir -p /etc/systemd/system/docker.service.d

填入以下内容:

[Service]
Environment="HTTP_PROXY=http://your_proxy.com"
Environment="HTTPS_PROXY=http://your_proxy.com"
Environment="NO_PROXY=localhost,127.0.0.1"

重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证代理情况:

sudo systemctl show --property=Environment docker