Загрузите только частные модули с внутреннего прокси-сервера 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 как вы указываете в своем вопросе.

Другие вопросы по тегам