HoHsi
@HoHsi

Как сделать Basic авторизацию на удаленном хосте в Nginx?

Добрый день!
На данный момент у меня в приватном Docker registry стоит Basic Auth авторизация. Встала задача проксировать запросы через Nginx на него.

Docker Registry и Nginx стоят на разных машинах, т.е. nginx прокидывает proxy на удаленную машину. Из-за этого я не могу сделать auth авторизацию на стороне nginx'а.

Как можно сделать так, что-бы nginx прокидывал авторизацию на удаленный хост, что-бы уже сам регистр авторизовывал пользователя?

Сейчас push в регистр отвечает:
Error parsing HTTP response: invalid character '<' looking for beginning of value: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>403 Forbidden</title>\n</head><body>\n<h1>Forbidden</h1>\n<p>You don't have permission to access /v2/busybox/blobs/uploads/<uuid>\non this server.<br />\n</p>\n<hr>\n<address>Apache/2.4.10 (Debian) Server at docker.example.com Port 80</address>\n</body></html>\n"


<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<h1>Forbidden</h1>
<p>You don't have permission to access /v2/busybox/blobs/uploads/<uuid>
on this server.<br />
</p>
<hr>
<address>Apache/2.4.10 (Debian) Server at docker.example.com Port 80</address>
</body>
</html>


upstream docker_example_com_registry {
    server <remote_registry_ip>:5000;
}

###
# Registry
###
server {
    listen          5000 ssl http2;
    server_name     docker.example.com;

    # SSL
    include         /etc/nginx/snippets/ssl.conf;
    include         /etc/nginx/snippets/ssl_example.com.conf;

    client_max_body_size 1024M;

    chunked_transfer_encoding on;

    location / {
        # Trust Proxy
        include /etc/nginx/snippets/trust_proxy.conf;

        proxy_pass http://docker_example_com_registry;
   }
}


При этом, пуш на локал хост работает
  • Вопрос задан
  • 615 просмотров
Пригласить эксперта
Ответы на вопрос 2
bigton
@bigton
Web-программист
Возможно вам поможет proxy_set_header

Так же посмотрите Basic access authentication
Ответ написан
@avost
Решение вашей проблемы лежит в области директивы auth_request .
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы