Коллеги, добрых суток!
Поднял приватный docker registry используя
официальную документацию.
Сделал basic авторизацию, сделал сертификаты, все как полагается. Настроил nginx.
Выполняю
docker login localhost:5000
, логин и пароль проходят без проблем.
Но если пытаюсь авторизоваться по домену
docker login registry.domain.name
, получаю ошибку 400.
Error response from daemon: login attempt to https://registry.domain.name/v2/ failed with status: 400 Bad Request
Судя по тому, что docker login localhost:5000 отрабатывает, наверно проблема в nginx. Конфиг прилагаю:
nginx.conf
upstream registry {
server 0.0.0.0:5000;
}
map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
'' 'registry/2.0';
}
server {
listen *:80;
server_name registry.domain.name;
server_tokens off;
return 301 https://registry.domain.name:443$request_uri;
}
server {
listen 443 ssl;
server_name registry.domain.name;
access_log /var/log/nginx/registry.domain.name.access.log;
error_log /var/log/nginx/registry.domain.name.error_log warn;
ssl_certificate /home/user/docker-registry/certs/registry.domain.name.crt;
ssl_certificate_key /home/user/docker-registry/certs/registry.domain.name.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
client_max_body_size 0;
chunked_transfer_encoding on;
location /v2/ {
if ($http_user_agent ~ "^(docker/1.(3|4|5(?!.[0-9]-dev))|Go ).*$" ) {
return 404;
}
add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always;
proxy_set_header Host $http_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-Proto $scheme;
proxy_read_timeout 900;
proxy_pass http://registry;
}
}