Загрузите только частные модули с внутреннего прокси-сервера go и получите общедоступные с внешнего прокси
Я начал с миграции проекта Go на использование модулей для управления зависимостями. У моей компании есть внутренний прокси-сервер, на котором размещены ТОЛЬКО ЧАСТНЫЕ модули. Итак, мне нужен способ загрузки ЧАСТНЫХ модулей с внутреннего прокси, скажем,goproxy.compamy.com
и общедоступные модули, такие как golang.org/x/tools/cmd/goimports
а также github.com/sirupsen/logrus
из общедоступного прокси-сервера, например proxy.golang.org
. Я думал, это решит эту проблему.
GOPROXY='goproxy.compamy.com,proxy.golang.org,direct'
GPPRIVATE=*.company.com/*
Но он терпит неудачу после опробования первого и второго прокси и никогда не использует direct
вариант как запасной вариант. Это известная проблема или я здесь что-то не так делаю?
Есть лучший способ это сделать? Ожидается ли, что внутренние прокси-серверы компании будут поддерживать общедоступные модули go? Это общее ожидание?
Я чувствую это после прочтения документации. Вот ссылки.
Как упоминалось в предложении: защита экосистемы модулей Public Go
Мы ожидаем, что корпоративные среды могут получать все модули, публичные и частные, через внутренний прокси;
Также в документации go пример корпоративного прокси
Например, если в компании запущен прокси-сервер модуля, обслуживающий частные модули, пользователи будут настраивать следующие параметры:
GOPRIVATE=*.corp.example.com GOPROXY=proxy.example.com GONOPROXY=none
Это сообщит команде go и другим инструментам, что модули, начинающиеся с поддомена corp.example.com, являются частными, но прокси компании следует использовать для загрузки как общедоступных, так и частных модулей, поскольку
GONOPROXY
был установлен на шаблон, который не будет соответствовать никаким модулям, переопределивGOPRIVATE
.
1 ответ
В Go 1.15 добавлена функция, которая теперь позволяет настраивать GOPROXY
пропускать прокси.
Примечания к выпуску From Go 1.15:
Переменная среды GOPROXY теперь поддерживает пропуск прокси, возвращающих ошибки. URL-адреса прокси теперь можно разделять запятыми (,) или вертикальной чертой (|). Если за URL-адресом прокси-сервера стоит запятая, команда go будет пробовать только следующий прокси в списке после HTTP-ответа 404 или 410. Если за URL-адресом прокси-сервера следует вертикальная черта, команда go попробует следующий прокси в списке после любой ошибки. Обратите внимание, что значение GOPROXY по умолчанию остается https://proxy.golang.org,direct, которое не возвращается к прямому в случае ошибок.
Это должно позволить вам настроить GOPROXY
как вы указываете в своем вопросе.