Nexus docker proxy за Nginx reverse proxy

Sonatype Nexus
Sonatype Nexus

Если ваш репозиторий 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 "";
 }
}
/etc/nginx/conf.d/proxy.hub.conf

На самом деле конфигурация достаточно распространённая и не самая полная, но для примера сойдет. Самый важный момент здесь — удаление токена авторизации в заголовке запроса от машины. Поскольку по докер пытается залогиниться на зеркало, с теми же учётными данными что и на docker.io

На самой целевой машине достаточно указать в параметрах /etc/docker/daemon.json адрес вашего прокси репо, в моём случае hub-proxy.sysadmintalks.ru, вот пример:

{
        "registry-mirrors": ["https://hub-proxy.sysadmintalks.ru"]
}
/etc/docker/daemon.json

Полезные материалы по теме:

Оставьте первый комментарий

Отправить ответ

Ваш e-mail не будет опубликован.


*