共计 2107 个字符,预计需要花费 6 分钟才能阅读完成。
日常工作中经常会遇到因生产网段无法访问外网而带来的设置代理需求,本文整理了大部分工具、软件的代理设置姿势。
下文以 PROTOCOL 表示代理协议, USERNAME 表示代理用户名,PASSWORD 表示代理密码,HOST 表示代理地址,PORT 表示代理端口,请根据实际情况替换这些占位符。如果未设置 USERNAME 和 PASSWORD,省略即可。
Linux 系统
若系统为 Linux 系统,可修改 /etc/environment 或 ~/.bashrc 等文件来设置代理:
export http_proxy=PROTOCOL://USERNAME:PASSWORD@HOST:PORT
export https_proxy=PROTOCOL://USERNAME:PASSWORD@HOST:PORT
在开启系统代理后,大部分软件均会使用这些代理,但仍有部分软件还需要单独设置,若需要单独设置,可参考本文其他设置。
SSH
修改 ~/.ssh/config,对特定 Host 进行配置,如下是对 Git 服务器设置代理:
Host git.xxxx.corp.com
HostName git.xxxx.corp.com
User xxx
IdentityFile ~/.ssh/id_rsa
ProxyCommand /usr/bin/nc -v -X PROTOCOL -P USERNAME -x HOST:PORT %h %p
其中 -X
指定了协议,目前有如下几个值:
4
:表示 socks45
:表示 socks5CONNECT
:表示 https
若未指定则默认为 socks5。如为 sock5 协议,则 ProxyCommand 可写为 ProxyCommand /usr/bin/nc -v -x HOST:PORT %h %p
。
修改 SSH 配置后,会对许多使用 SSH 服务的应用均生效,如 git。
Git
git 默认提供了 git 和 https 两种协议,若使用 git 协议可参考 SSH 部分设置。这里说下 https 协议的代理设置。
编辑 ~/.gitconfig,增加如下配置:
[http]
[http "https://github.com"]
proxy = PROTOCOL://USERNAME:PASSWORD@HOST:PORT
或执行如下命令进行设置:
git config --global http.proxy PROTOCOL://USERNAME:PASSWORD@HOST:PORT
Maven
参考 Configuring a proxy,编辑 ~/.m2/settings.xml,增加如下配置:
example-proxy
true
PROTOCOL
HOST
PORT
USERNAME
PASSWORD
www.google.com|*.github.com|*.apache.org
Golang
Golang 可以使用系统代理。
如果仅仅只想修改模块下载地址,可使用 go env -w GOPROXY=https://goproxy.cn,direct
设置为从 goproxy.cn 下载模块。
npm
设置代理
- http proxy:
- 开启:
npm config set proxy socks5://127.0.0.1:1080
,若设置了HTTP_PROXY
或http_proxy
环境变量,request
库将遵循环境变量代理设置。 - 取消:
npm config delete proxy
- 开启:
- https proxy:
- 开启:
npm config set https-proxy sock5://127.0.0.1:1080
,若设置了HTTPS_PROXY
或https_proxy
或HTTP_PROXY
或http_proxy
环境变量,make-fetch-happen
库将遵循代理设置 - 取消:
npm config delete https-proxy
- 开启:
- noproxy:
- 开启:
npm config set noproxy localhost,127.0.0.*
- 取消:
npm config delete noproxy
- 开启:
或编辑 ~/.npmrc
:
proxy=socks5://127.0.0.1:1080
https-proxy=socks5://127.0.0.1:1080
// or
// https_proxy=socks5://127.0.0.1:1080
设置 registry
registry 默认值为 https://registry.npmjs.org/
,国内用户在使用时可指定为 https://registry.npmmirror.com
:
- 临时使用:
npm install x --registry=https://registry.npmmirror.com
- 持久使用:
npm config set registry https://registry.npmmirror.com
- 恢复官方 registry:
npm config set registry https://registry.npmjs.org
- 查看 registry:
npm config get registry
cnpm
使用 cnpm 来代表 npm
:
- 安装 cnpm:
npm install -g cnpm --registry=https://registry.npmmirror.com
- 使用 cnpm:
cnpm install x