nginx를 docker 레지스트리에 대한 proxypass로 설정하면 http 프로토콜이 작동하지만 https를 설정하면 다음과 같은 결과가 나타납니다.400 The plain HTTP request was sent to HTTPS port
이것은 내 nginx 구성 파일입니다.
upstream docker-registry {
server 127.0.0.1:5000;
}
server {
listen 443 ssl;
server_name docker-registry.mydomain.it;
ssl_certificate /etc/ssl/certs/docker-registry;
ssl_certificate_key /etc/ssl/private/docker-registry;
proxy_set_header Host $http_host; # required for Docker client sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client IP
client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
# required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486)
chunked_transfer_encoding on;
location / {
# let Nginx know about our auth file
auth_basic "Restricted";
auth_basic_user_file docker-registry.htpasswd;
proxy_pass http://docker-registry;
}
location /_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
location /v1/_ping {
auth_basic off;
proxy_pass http://docker-registry;
}
}
답변1
다음에 추가:
proxy_set_header X-Forwarded-Proto $scheme;
답변2
-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock --insecure-registry localhost:5000
문제는 docker-registry 구성이었습니다. /etc/sysconfig/docker 아래에 줄을 추가하여 문제를 해결했습니다.OPTIONS