Перейти к содержимому
Гайды 5 мин чтения 2 просмотров

Использование прокси с пакетными менеджерами

Подробное руководство по настройке и использованию прокси-серверов с популярными пакетными менеджерами: npm, pip и composer. Узнайте все нюансы для эффективной работы.

Python

Использование прокси-сервера с пакетными менеджерами, такими как npm, pip и Composer, позволяет маршрутизировать сетевой трафик через промежуточный сервер, что необходимо для доступа к репозиториям из-за фаерволов, для обхода географических ограничений или для централизованного контроля исходящих соединений.

Прокси-серверы играют ключевую роль в корпоративных средах и при разработке, обеспечивая контролируемый доступ к внешним ресурсам. Для пакетных менеджеров это означает возможность загрузки зависимостей и пакетов даже при строгих сетевых политиках. Настройка прокси для npm, pip и Composer включает использование переменных окружения, специфичных для каждого менеджера конфигурационных файлов или параметров командной строки.

Общие принципы настройки прокси

Большинство приложений, включая пакетные менеджеры, могут использовать стандартные переменные окружения для настройки прокси. Эти переменные являются универсальным методом и часто переопределяются специфическими настройками самого пакетного менеджера.

Переменные окружения для прокси

  • HTTP_PROXY или http_proxy: Используется для HTTP-трафика.
  • HTTPS_PROXY или https_proxy: Используется для HTTPS-трафика.
  • ALL_PROXY или all_proxy: Может использоваться как универсальная переменная, если специфические HTTP/HTTPS переменные не заданы.
  • NO_PROXY или no_proxy: Определяет список хостов, к которым следует подключаться напрямую, минуя прокси. Значения разделяются запятыми и могут включать IP-адреса, доменные имена и CIDR-блоки. Пример: localhost,127.0.0.1,.example.com,192.168.0.0/24.

Формат для значений прокси: http://[пользователь:пароль@]хост:порт/ или https://[пользователь:пароль@]хост:порт/.

Пример установки переменных окружения (Linux/macOS):

export HTTP_PROXY="http://user:password@proxy.example.com:8080"
export HTTPS_PROXY="http://user:password@proxy.example.com:8080"
export NO_PROXY="localhost,127.0.0.1,.internal.com"

Пример установки переменных окружения (Windows CMD):

set HTTP_PROXY=http://user:password@proxy.example.com:8080
set HTTPS_PROXY=http://user:password@proxy.example.com:8080
set NO_PROXY=localhost,127.0.0.1,.internal.com

Пример установки переменных окружения (Windows PowerShell):

$env:HTTP_PROXY="http://user:password@proxy.example.com:8080"
$env:HTTPS_PROXY="http://user:password@proxy.example.com:8080"
$env:NO_PROXY="localhost,127.0.0.1,.internal.com"

Использование прокси с npm

npm (Node Package Manager) является стандартным пакетным менеджером для Node.js. Он поддерживает настройку прокси как через переменные окружения, так и через свои собственные конфигурационные параметры.

Конфигурация через npm config

npm имеет собственные команды для настройки прокси, которые сохраняют параметры в файле .npmrc (глобально или локально в проекте). Эти настройки имеют приоритет над переменными окружения.

  • Установка HTTP-прокси:
    bash npm config set proxy http://user:password@proxy.example.com:8080
  • Установка HTTPS-прокси:
    bash npm config set https-proxy http://user:password@proxy.example.com:8080
    Важно: даже для HTTPS-трафика часто используется HTTP-прокси (CONNECT-метод).
  • Удаление настроек прокси:
    bash npm config delete proxy npm config delete https-proxy
  • Просмотр текущих настроек:
    bash npm config get proxy npm config get https-proxy
  • Отключение проверки SSL-сертификатов (не рекомендуется для продакшена):
    bash npm config set strict-ssl false
    Это может быть необходимо, если корпоративный прокси перехватывает и перешифровывает SSL-трафик с использованием собственного корневого сертификата, который не установлен в системе. Более безопасный подход — установить корпоративный CA-сертификат.

Приоритет настроек npm

  1. Параметры командной строки (например, npm install --proxy ...).
  2. Переменные окружения (HTTP_PROXY, HTTPS_PROXY).
  3. Настройки в файле .npmrc (локальный, затем пользовательский, затем глобальный).

Использование прокси с pip

pip является стандартным пакетным менеджером для Python. Он поддерживает настройку прокси через переменные окружения, параметры командной строки или конфигурационный файл pip.ini (Windows) / pip.conf (Linux/macOS).

Конфигурация через параметры командной строки

Для однократного использования прокси можно указать его непосредственно в команде pip:

pip install some-package --proxy http://user:password@proxy.example.com:8080

Конфигурация через переменные окружения

pip уважает стандартные переменные окружения HTTP_PROXY, HTTPS_PROXY, NO_PROXY. Это предпочтительный метод для системной настройки.

Конфигурация через конфигурационный файл

pip позволяет настроить прокси в своем конфигурационном файле.

  • Местоположение файла:
    • Linux/macOS: ~/.config/pip/pip.conf или ~/.pip/pip.conf
    • Windows: %APPDATA%\pip\pip.ini или %HOME%\pip\pip.ini
  • Пример содержимого pip.conf / pip.ini:
    ini [global] proxy = http://user:password@proxy.example.com:8080 cert = /path/to/custom/ca.pem # Для корпоративных сертификатов trusted-host = pypi.org trusted-host = files.pythonhosted.org
  • Отключение проверки SSL-сертификатов (не рекомендуется):
    ini [global] cert = false
    Или через командную строку: pip install some-package --trusted-host pypi.org --trusted-host files.pythonhosted.org.

Приоритет настроек pip

  1. Параметры командной строки (--proxy).
  2. Переменные окружения (HTTP_PROXY, HTTPS_PROXY).
  3. Настройки в конфигурационном файле (pip.conf / pip.ini).

Использование прокси с Composer

Composer является пакетным менеджером для PHP. Он также поддерживает настройку прокси через переменные окружения и специфические настройки в файле composer.json или глобальном файле конфигурации.

Конфигурация через переменные окружения

Composer уважает переменные окружения HTTP_PROXY, HTTPS_PROXY, NO_PROXY. Это наиболее распространенный и рекомендуемый способ настройки прокси для Composer.

Конфигурация через Composer config

Composer позволяет устанавливать глобальные настройки, которые хранятся в файле config.json в домашней директории пользователя (~/.composer/config.json). Эти настройки могут включать параметры прокси.

  • Установка HTTP-прокси:
    bash composer config --global http-proxy http://user:password@proxy.example.com:8080
  • Установка HTTPS-прокси:
    bash composer config --global https-proxy http://user:password@proxy.example.com:8080
  • Отключение проверки SSL-сертификатов (не рекомендуется):
    bash composer config --global disable-tls true
    Это эквивалентно установке disable-tls в true в config.json.
  • Просмотр текущих настроек:
    bash composer config --list --global

Пример ~/.composer/config.json

{
    "config": {
        "http-proxy": "http://user:password@proxy.example.com:8080",
        "https-proxy": "http://user:password@proxy.example.com:8080",
        "disable-tls": false,
        "cafile": "/path/to/custom/ca.pem"
    }
}

Приоритет настроек Composer

  1. Переменные окружения (HTTP_PROXY, HTTPS_PROXY).
  2. Настройки в composer.json (локальный, затем глобальный).

Сравнение методов настройки прокси

Функция/Менеджер npm pip Composer
Переменные окружения HTTP_PROXY, HTTPS_PROXY, NO_PROXY HTTP_PROXY, HTTPS_PROXY, NO_PROXY HTTP_PROXY, HTTPS_PROXY, NO_PROXY
Командная строка npm config set proxy ... pip install --proxy ... Нет прямого параметра --proxy
Конфигурационный файл .npmrc pip.ini / pip.conf composer.json (глобальный/локальный)
Параметры прокси в файле proxy, https-proxy proxy (в секции [global]) http-proxy, https-proxyconfig)
Аутентификация user:password@host:port user:password@host:port user:password@host:port
Отключение SSL-проверки npm config set strict-ssl false cert = false или --trusted-host composer config --global disable-tls true

Рекомендации и устранение неисправностей

  1. Проверка доступности прокси: Убедитесь, что прокси-сервер доступен и работает. Используйте утилиты вроде curl или wget с теми же настройками прокси для проверки.
    bash curl -x http://user:password@proxy.example.com:8080 https://registry.npmjs.org/
  2. Проверка учетных данных: Убедитесь, что имя пользователя и пароль для прокси-сервера указаны корректно.
  3. Проблемы с SSL/TLS:
    • Если прокси перехватывает SSL-трафик (Man-in-the-Middle), пакетный менеджер может выдавать ошибки SSL-сертификатов.
    • Лучшее решение — установить корневой сертификат вашего корпоративного центра сертификации в системное хранилище или указать путь к нему в конфигурации пакетного менеджера (например, npm config set cafile /path/to/ca.pem, cert = /path/to/ca.pem для pip, cafile для Composer).
    • Отключение проверки SSL (strict-ssl false, cert = false, disable-tls true) должно использоваться только как временное решение в контролируемой среде, так как это снижает безопасность.
  4. Переменная NO_PROXY: Убедитесь, что хосты, к которым вы хотите подключаться напрямую (например, локальные репозитории или зеркала), правильно включены в список NO_PROXY.
  5. Приоритет настроек: Помните о приоритете настроек (командная строка > переменные окружения > конфигурационные файлы). Если прокси не работает, проверьте, не переопределяется ли он другой настройкой.
  6. Firewall: Убедитесь, что ваш локальный фаервол или фаервол на сервере не блокирует исходящие соединения на порт прокси-сервера.

Использование прокси с пакетными менеджерами требует внимательной настройки, особенно в корпоративных сетях с жесткими политиками безопасности и перехватом SSL-трафика. Правильная конфигурация обеспечивает бесперебойную работу с зависимостями и доступ к внешним репозиториям.

Обновлено: 04.03.2026
Назад к категории

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира