Как настроить прокси для Composer: http_proxy, https_proxy, no_proxy
Настройка http_proxy и https_proxy для Composer — подробный разбор

Composer: работа с прокси-серверами и переменными окружения

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Переменные http_proxy, https_proxy и no_proxy в Composer

Composer, как и многие другие инструменты, использует переменные среды для управления использованием прокси-сервера и поддерживает:

  • http_proxy — прокси для HTTP-запросов
  • https_proxy — прокси для HTTPS-запросов
  • CGI_HTTP_PROXY — прокси для HTTP-запросов в контексте, отличном от CLI
  • no_proxy — домены, не требующие прокси

Эти названия переменных — это скорее общепринятая практика, а не официальный стандарт. В разных операционных системах и программах они могут работать по-разному. Composer в основном использует строчные буквы (например, http_proxy), но понимает и заглавные (HTTP_PROXY), если это нужно.

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

Composer требует определенных переменных среды для HTTP- и HTTPS-запросов. Например:

http_proxy=http://proxy.com:80
https_proxy=http://proxy.com:80

Можно также использовать заглавные буквы в именах.

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

Когда Composer запускается не из командной строки (например, внутри CMS или другого приложения), он не учитывает переменные http_proxy и HTTP_PROXY. В таких случаях нужно использовать специальную переменную CGI_HTTP_PROXY для HTTP-запросов.

CGI_HTTP_PROXY=http://proxy.com:80
https_proxy=http://proxy.com:80

# cgi_http_proxy can also be used

Важно:
Переменная CGI_HTTP_PROXY появилась ещё в 2001 году в Perl для защиты от уязвимостей, связанных с подменой HTTP-заголовков. Широкую известность она получила в 2016 году после публикации уязвимости HTTPoxy.

Синтаксис

Используйте формат scheme://хост:порт, как в приведённых выше примерах. Хотя отсутствующая схема по умолчанию принимается как http, а отсутствующий порт по умолчанию становится 80/443 для схем http/https, другие инструменты могут требовать явного указания этих значений.

Хост может быть указан как:

  • IPv4-адрес в точечно-десятичной нотации
  • IPv6-адрес в квадратных скобках

Авторизация

Composer поддерживает Basic-авторизацию, используя синтаксис: scheme://user:pass@host:port

Важные требования:

  1. Специальные символы URL в логине или пароле обязательно должны быть закодированы через percent-encoding
  2. Логин и пароль кодируются отдельно, затем объединяются через двоеточие
  3. Логин не может содержать двоеточие (даже в закодированном виде), так как прокси-сервер разделяет компоненты по первому встреченному двоеточию

Пример корректного использования:

user:  me@company
pass:  p@ssw$rd
proxy: http://proxy.com:80

# percent-encoded authorization
me%40company:p%40ssw%24rd

scheme://me%40company:p%40ssw%24rd@proxy.com:80

Техническое пояснение:

  • Percent-encoding преобразует спецсимволы в формат %XX (например, @%40)
  • Двоеточие (:) является разделителем и не может быть частью логина
  • Это ограничение связано с алгоритмом разбора строки прокси-сервером

HTTPS-прокси-серверы

Composer поддерживает HTTPS-прокси-серверы, где HTTPS — это схема, используемая для подключения к прокси, но только с PHP 7.3 с версией curl 7.52.0 и выше.

http_proxy=https://proxy.com:443
https_proxy=https://proxy.com:443

Обход прокси для определенных доменов

Используйте переменную среды no_proxy (или NO_PROXY), чтобы задать разделенный запятыми список доменов, для которых не следует использовать прокси.

no_proxy=example.com
# Обходит прокси-сервер для example.com и его поддоменов

no_proxy=www.example.com
# Обходит прокси для www.example.com и его поддоменов, но не для example.com

Домен может быть ограничен определенным портом (например, :80), а также может быть указан как IP-адрес или блок IP-адресов в нотации CIDR.

Адреса IPv6 не обязательно заключать в квадратные скобки, как для значений http_proxy/https_proxy, хотя этот формат принимается.

Установка значения * обойдет прокси-сервер для всех запросов.

Примечание:
Начальная точка в имени домена не имеет значения и удаляется перед обработкой.

Устаревшие переменные среды

Composer изначально предоставлял HTTP_PROXY_REQUEST_FULLURI и HTTPS_PROXY_REQUEST_FULLURI для смягчения проблем с некорректно работающими прокси. Они больше не требуются и не используются.

Перевод с английского официальной документации Composer:
https://getcomposer.org/doc/faqs/how-to-use-composer-behind-a-proxy.md

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню