NGINX: 400 HTTPS 포트로 전송된 순수 HTTP 요청

NGINX: 400 HTTPS 포트로 전송된 순수 HTTP 요청

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

관련 정보