プロキシ設定はつらい。
環境変数か、設定ファイルか、コマンドラインの引数指定か、それ以外か。
一般にコマンドライン引数、設定ファイル、環境変数の順に設定が有効だが、本当か。
環境変数は大文字・小文字どちらなのか。
...など、ツールごとに違うし、公式のドキュメントにたどり着きにくいし、つらい。
昨今、 HTTP プロキシが必須なことはまれで、だいたい HTTPS プロキシを設定すれば十分そう。
ツールごとの HTTPS プロキシ設定をまとめておく。
プロキシ設定
Linux OSパッケージ管理
apt
環境変数か、設定ファイルで設定を書く。
設定ファイルの場合、 /etc/apt/apt.conf.d/proxy.conf
に設定を加える。
Acquire::https::Proxy "http://proxy.example.com:3128";
- 参考資料
- apt.conf(5)
-
https://linux.die.net/man/5/apt.conf#:~:text=The%20%22http_proxy%22%20environment%20variable%20will%20override%20all%20settings.
-
The "http_proxy" environment variable will override all settings.
-
-
https://linux.die.net/man/5/apt.conf#:~:text=The%20%22http_proxy%22%20environment%20variable%20will%20override%20all%20settings.
- apt/methods / http.cc
- apt.conf(5)
dnf
環境変数か、設定ファイルで設定を書く。
設定ファイルの場合、 /etc/dnf/dnf.conf
に設定を加える。
proxy http://proxy.example.com:3128
- 参考資料
- dnf.conf(5)
-
https://man7.org/linux/man-pages/man5/dnf.conf.5.html#:~:text=Empty%20by%20default.-,proxy,-string%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%20of
-
URL of a proxy server to connect through. Set to an empty string in the repository configuration to disable proxy setting inherited from the main section. The expected format of this option is ://[:port].
-
-
https://man7.org/linux/man-pages/man5/dnf.conf.5.html#:~:text=Empty%20by%20default.-,proxy,-string%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%20of
- dnf.conf(5)
yum
dnf と同様そうなので省略。
apk
環境変数 https_proxy を設定する。
- 参考資料
- Document proxy support better
-
https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10756#note_171636
-
Well, then just use the http proxy variables, http_proxy, https_proxy, and no_proxy all work.
-
-
https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10756#note_171636
- Document proxy support better
Microsoft Windows
TODO: netsh.exe でプロキシを設定する。
PS > Get-ComputerInfo | select WindowsProductName, OsVersion
WindowsProductName OsVersion
------------------ ---------
Windows 10 Home 10.0.22631
PS > netsh winhttp set proxy /?
使用法: set proxy [proxy-server=]<サーバー名> [bypass-list=]<ホスト一覧>
パラメーター:
タグ 値
proxy-server - http または https プロトコルに使用するプロキシ サーバー
bypass-list - プロキシをバイパスすることで表示するサイトの
一覧 (短い名前のホストをすべてバイパスする場合は
"<local>" を使用)
例:
set proxy myproxy
set proxy myproxy:80 "<local>;bar"
set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*.foo.com"
- 参考資料
- ProxyCfg.exe proxy configuration tool
-
https://learn.microsoft.com/en-us/windows/win32/winhttp/proxycfg-exe--a-proxy-configuration-tool
-
ProxyCfg.exe has been deprecated since Windows Vista and Windows Server 2008. It's replaced by Netsh.exe (see Netsh.exe commands).
-
-
https://learn.microsoft.com/en-us/windows/win32/winhttp/proxycfg-exe--a-proxy-configuration-tool
- Netsh.exe commands
- ProxyCfg.exe proxy configuration tool
コマンドライン・ツール
curl
引数で指定するか、環境変数を設定する。
環境変数の場合、次のように定義する。
export https_proxy="http://proxy.example.com:3128"
環境変数の名前は大文字 HTTPS_PROXY
も有効だが、小文字 https_proxy
が良い。
- 参考資料
-
-x/--proxy <proxyhost[:port]>
- Environment
-
https://curl.se/docs/manpage.html#ENVIRONMENT
-
The environment variables can be specified in lower case or upper case. The lower case version has precedence. "http_proxy" is an exception as it is only available in lower case.
-
-
https://curl.se/docs/manpage.html#ENVIRONMENT
-
wget
環境変数か、設定ファイルで設定を書く。
設定ファイルの場合、 $HOME/.wgetrc
に設定を加える。
https_proxy = http://proxy.example.com:3128/
- 参考資料
git
git config
設定か、環境変数を設定する。
環境変数の場合、 curl 同様に設定する。
次のように定義する。
export https_proxy="http://proxy.example.com:3128"
- 参考資料
-
http.proxy
-
https://www.git-scm.com/docs/git-config/#Documentation/git-config.txt-httpproxy
-
Override the HTTP proxy, normally configured using the http_proxy, https_proxy, and all_proxy environment variables (see curl(1))
-
-
https://www.git-scm.com/docs/git-config/#Documentation/git-config.txt-httpproxy
-
Docker
dockerd デーモン
設定ファイル daemon.json
(ただし Docker Engine 23.0 以降)か、環境変数で設定する。
環境変数で設定する場合、 systemd で管理される Linux なら systemctl edit docker.service
で設定する。
systemctl edit docker.service
[Service]
Environment="HTTPS_PROXY=http://proxy.example.com:3128"
環境変数の名前は大文字や小文字を問わない。
- 参考資料
- Configure the Docker daemon to use a proxy server
- docker.service - How to edit systemd service file?
-
https://unix.stackexchange.com/questions/542343/docker-service-how-to-edit-systemd-service-file
systemctl edit docker.service
-
https://unix.stackexchange.com/questions/542343/docker-service-how-to-edit-systemd-service-file
Docker クライアント, docker コマンド
TODO
Node.js
npm
npm config
設定か、環境変数で設定する。
設定の場合、次のように設定する。
npm config set https-proxy "http://proxy.example.com:3128"
# または
npm -g config set https-proxy "http://proxy.example.com:3128"
環境変数の場合、 curl 同様に設定する。
次のように定義する。
export https_proxy="http://proxy.example.com:3128"
- 参考資料
- npm-config
- https-proxy
-
https://docs.npmjs.com/cli/v10/using-npm/config#https-proxy
-
A proxy to use for outgoing https requests. If the HTTPS_PROXY or https_proxy or HTTP_PROXY or http_proxy environment variables are set, proxy settings will be honored by the underlying make-fetch-happen library.
-
-
https://docs.npmjs.com/cli/v10/using-npm/config#https-proxy
- make-fetch-happen / README.md
-
https://github.com/npm/make-fetch-happen/blob/ed73ef528397a574df711e24238aaf7954512e55/README.md?plain=1#L239-L240
-
Additionally,
process.env.HTTP_PROXY
,process.env.HTTPS_PROXY
, andprocess.env.PROXY
are used if present and noopts.proxy
value is provided.
-
-
https://github.com/npm/make-fetch-happen/blob/ed73ef528397a574df711e24238aaf7954512e55/README.md?plain=1#L239-L240
Python3
pip コマンド
引数で指定するか、設定ファイルか、環境変数などで設定する。
環境変数の場合、次のように定義する。
export https_proxy="http://proxy.example.com:3128"
環境変数の名前は小文字が有効である。大文字が有効かわからない。
- 参考資料
- Using a Proxy Server
-
https://pip.pypa.io/en/stable/user_guide/#using-a-proxy-server
-
pip can be configured to connect through a proxy server in various ways
-
-
https://pip.pypa.io/en/stable/user_guide/#using-a-proxy-server
- Using a Proxy Server
urllib3 パッケージ
少なくともコードや、環境変数で設定できる。
export HTTPS_PROXY="http://proxy.example.com:3128"
環境変数の名前は大文字が有効である。小文字が有効かわからない。
- 参考資料
- Your proxy appears to only use HTTP and not HTTPS
requests パッケージ
少なくともコードや、環境変数で設定できる。
export https_proxy="http://proxy.example.com:3128"
環境変数の名前は大文字や小文字を問わない。
- 参考資料
- Proxies
-
https://requests.readthedocs.io/en/latest/user/advanced/#proxies
-
When the proxies configuration is not overridden per request as shown above, Requests relies on the proxy configuration defined by standard environment variables http_proxy, https_proxy, no_proxy, and all_proxy. Uppercase variants of these variables are also supported.
-
-
https://requests.readthedocs.io/en/latest/user/advanced/#proxies
- Proxies
主な変更履歴
- 2024-03-20: Microsoft Windows を加えた。
TODO
- .curlrc
- TODO
さいごに
加筆したいものがあればコメントにどうぞ!