Переменные окружения#
export HTTP_PROXY="http://USER:PASS@res.hodlproxy.com:9000"
export HTTPS_PROXY="$HTTP_PROXY"
export NO_PROXY="localhost,127.0.0.1,.internal,.local"
# Некоторые инструменты читают только имена в нижнем регистре
export http_proxy="$HTTP_PROXY" https_proxy="$HTTPS_PROXY" no_proxy="$NO_PROXY"HTTPS_PROXY— это прокси для HTTPS-адресатов; его значение всё равно URL видаhttp://, потому что инструмент общается с прокси по обычному HTTP и туннелирует через него TLS.NO_PROXYперечисляет хосты, которые не должны идти через прокси: внутренние реестры, сервисы метаданных, localhost.- Спецсимволы в пароле нужно кодировать для URL (
@становится%40,:—%3A), иначе URL разберётся неправильно.
git#
git config --global http.proxy http://USER:PASS@res.hodlproxy.com:9000
# Только для одного хоста
git config --global http.https://github.com.proxy http://USER:PASS@res.hodlproxy.com:9000
# SOCKS5 с удалённым DNS
git config --global http.proxy socks5h://USER:PASS@res.hodlproxy.com:9001
# Отключить
git config --global --unset http.proxyЭти настройки действуют только для HTTPS-репозиториев. Для SSH-репозиториев нужен ProxyCommand, например ncat --proxy-type socks5 --proxy res.hodlproxy.com:9001 --proxy-auth USER:PASS %h %p в ~/.ssh/config.
npm и yarn#
npm config set proxy http://USER:PASS@res.hodlproxy.com:9000
npm config set https-proxy http://USER:PASS@res.hodlproxy.com:9000
# yarn 1
yarn config set proxy http://USER:PASS@res.hodlproxy.com:9000
yarn config set https-proxy http://USER:PASS@res.hodlproxy.com:9000
# yarn 2 и новее
yarn config set httpProxy http://USER:PASS@res.hodlproxy.com:9000
yarn config set httpsProxy http://USER:PASS@res.hodlproxy.com:9000pip#
pip install --proxy http://USER:PASS@res.hodlproxy.com:9000 requests
# Постоянно: в pip.conf (Linux/macOS) или pip.ini (Windows)
[global]
proxy = http://USER:PASS@res.hodlproxy.com:9000pip принимает SOCKS5-прокси только при установленном пакете PySocks, иначе завершится ошибкой об отсутствующей зависимости. На чистой машине используйте HTTP-порт.
Docker#
У Docker две разные настройки прокси, и их путаница — главная ловушка. Демон скачивает образы и не видит переменных вашей оболочки; клиент передаёт настройки прокси в сборки и контейнеры.
# /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://USER:PASS@res.hodlproxy.com:9000"
Environment="HTTPS_PROXY=http://USER:PASS@res.hodlproxy.com:9000"
Environment="NO_PROXY=localhost,127.0.0.1"
# затем
sudo systemctl daemon-reload && sudo systemctl restart docker{
"proxies": {
"default": {
"httpProxy": "http://USER:PASS@res.hodlproxy.com:9000",
"httpsProxy": "http://USER:PASS@res.hodlproxy.com:9000",
"noProxy": "localhost,127.0.0.1"
}
}
}В Docker Desktop настройка демона находится в Settings → Resources → Proxies.
apt#
Acquire::http::Proxy "http://USER:PASS@res.hodlproxy.com:9000/";
Acquire::https::Proxy "http://USER:PASS@res.hodlproxy.com:9000/";Go#
Инструменты Go учитывают HTTPS_PROXY и NO_PROXY. GOPROXY — совсем другое: адрес зеркала модулей, а не сетевой прокси, и его смена не направляет трафик через выход.
Какой выход использовать#
- Реестрам пакетов и git-хостингам не нужно доверие как к домашнему IP: серверный адрес от $0.70 в месяц с общим пулом 100 ГБ на IP — самый дешёвый стабильный вариант.
- Если вы используете резидентский пул с ротацией, держите закреплённую сессию (
-sid-build1-ttl-30m), чтобы крупная загрузка не сменила выход посередине. - На серверах лучше белый список IP: никаких учётных данных в переменных окружения и конфигах, которые могут прочитать другие пользователи и процессы.
Частые вопросы#
Почему значение HTTPS_PROXY начинается с http://?
Потому что оно описывает, как инструмент общается с прокси, а не с адресатом. Инструмент отправляет запрос CONNECT по обычному HTTP, а затем согласует TLS с адресатом через туннель.
Использует ли Docker HTTP_PROXY из моей оболочки?
Клиент — да, для сборок, которые его передают, а демон, скачивающий образы, — нет: настройте его в systemd drop-in или в настройках прокси Docker Desktop.
Что делает NO_PROXY?
Перечисляет хосты, к которым нужно обращаться напрямую, минуя прокси: localhost, внутренние реестры и адреса метаданных облака. Записи, начинающиеся с точки, охватывают весь домен.
GOPROXY — это прокси-сервер?
Нет. GOPROXY указывает инструментам Go зеркало модулей. Чтобы направить сетевой трафик Go через прокси, задайте HTTPS_PROXY.