Если ваш репозиторий Nexus расположен внутри сети, за Nginx reverse proxy, и вам очень нужен анонимный доступ до прокси репы, и вы не хотите получать ошибку «no basic auth credentials», то придётся немного смухлевать с настройками.
На официальном форуме Nexus мне удалось найти только информацию о том, что такой функционал не поддерживается, но если вы настраивали свой репозиторий по статье
Настройка docker proxy репозитория в Nexus или по аналогичной, и внутри сети у вас всё работает, то настраиваем Nginx Proxy и клиентскую машину таким образом:
server {
listen 443 ssl;
server_name hub-proxy.sysadmintalks.ru;
ssl_certificate /etc/nginx/ssl/ssl_certificate.crt;
ssl_certificate_key /etc/nginx/ssl/ssl_certificate_key.key;
client_max_body_size 2G;
location / {
## proxy репозиторий на этой же машине, за 5005 портом
proxy_pass http://localhost:5005/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
# удаляем токен аутентификации из заголовка
proxy_set_header Authorization "";
}
}
На самом деле конфигурация достаточно распространённая и не самая полная, но для примера сойдет. Самый важный момент здесь — удаление токена авторизации в заголовке запроса от машины. Поскольку по докер пытается залогиниться на зеркало, с теми же учётными данными что и на docker.io
На самой целевой машине достаточно указать в параметрах /etc/docker/daemon.json
адрес вашего прокси репо, в моём случае hub-proxy.sysadmintalks.ru, вот пример:
{
"registry-mirrors": ["https://hub-proxy.sysadmintalks.ru"]
}
Полезные материалы по теме:
- Установка Sonatype Nexus в docker
- Настройка docker proxy репозитория в Nexus
- Установка Docker в Linux
Отправить ответ