Добрый день!
На данный момент у меня в приватном 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;
}
}
При этом, пуш на локал хост работает