Внутренний API уходит через корпоративный прокси: проверяем curl и NO_PROXY

Внутренний API доступен из сети сервера, но curl получает страницу корпоративного прокси или ошибку CONNECT. При этом другой клиент работает. Возможная причина — переменные окружения: curl направляет запрос через прокси, который не знает внутреннее имя либо не имеет права соединяться с ним.

Посмотрите фактическое соединение

curl --connect-timeout 5 --max-time 15 -v https://inventory.internal.example/health

В подробном выводе видно использование proxy-переменной и адрес промежуточного соединения. Для HTTPS обычно появляется CONNECT к целевому имени. Это означает, что вы проверяете путь через прокси, а не прямую доступность API с сервера. Успешное разрешение имени локальным DNS ещё не подтверждает, что его разрешит сам прокси.

Проверьте значения https_proxy, HTTPS_PROXY, all_proxy, ALL_PROXY, no_proxy и NO_PROXY в окружении запуска. Не копируйте их целиком в отчёт: URL прокси может содержать учётные данные. Важны имя узла, схема, порт и список исключений. Для HTTP curl намеренно принимает http_proxy в нижнем регистре, что тоже может объяснять различия окружений.

Сравните разрешённый прямой путь

curl --noproxy inventory.internal.example --connect-timeout 5 --max-time 15 -v https://inventory.internal.example/health

Такую проверку выполняют, когда прямой доступ к внутреннему API предусмотрен политикой сети. Она исключает прокси для указанного имени на один вызов. Если запрос теперь работает, сопоставьте ошибку прокси и прямой ответ: это конкретное основание корректировать исключение, а не отключать прокси для всех назначений.

Если прямая проверка тоже не работает, разделите её этапы. Ошибка разрешения имени относится к локальному DNS, таймаут соединения — к пути и правилам, отказ сертификата — к TLS. Удаление прокси-переменной не исправляет эти причины автоматически.

Закрепите исключение в нужном окружении

Для одного сервиса задайте точное имя в no_proxy. Если требуется доменный суффикс или диапазон IP, проверьте правила сопоставления установленного curl. Поддержка CIDR появилась в curl 7.86.0. Другие приложения могут трактовать NO_PROXY иначе, поэтому работоспособность curl не доказывает эквивалентное поведение Java-клиента или браузера.

Учтите имя в URL. Исключение для IP не обязательно покрывает запрос по DNS-имени, даже когда оно разрешается в этот IP. Для понятной конфигурации описывайте именно те имена, которыми пользуется приложение. При redirect на другое имя решение о прокси потребуется и для следующего назначения.

После изменения проверьте внутренний API и один внешний сервис, который должен по-прежнему идти через прокси. В подробном выводе подтвердите оба маршрута. Это покажет, что исправлено точное исключение и сохранена исходная схема выхода в сеть.

Разбирайте окружение клиента вместе с сетевым путём. В курсе Linux и Bash для DevOps-инженеров есть сеть, DNS и HTTP-диагностика. Откройте программу, чтобы уверенно объяснять, почему одинаковая команда из разных окружений попадает к разным посредникам.

Ещё по теме

Продолжить на практике

  • Linux и Bash для DevOps-инженеров ↗

    Linux для работы с серверами: процессы, права, systemd, сеть, диски и логи. Автоматизируйте повседневные задачи на Bash и разберите типичные сбои сервиса — от занятого порта до переполненного диска.