2017-11-06 4 views
1

docker swarm에서 실행중인 Nginx로 SSL을 설정하려고하지만 문제가 발생했습니다. 모든 것은 정확 해 보이지만, 502를 얻을 때까지는 모든 요청을 그냥 멈 춥니 다. 필자는 작성 파일에 포트 443을 공개했습니다. 여기SSL 지원 Nookx를 사용하는 Docker Swarm

*7 peer closed connection in SSL handshake while SSL handshaking to upstream, client: 10.255.0.2, server: subdomain.mysite.com, request: "GET /api-v1/user-login HTTP/2.0", upstream: "https://10.0.0.6:5051/api-v1/user-login", host: "subdomain.mysite.com" 

내의 nginx의 default.conf의 관련 부분입니다 :

ssl_session_cache shared:SSL:10m; 
ssl_session_timeout 10m; 
ssl_protocols  SSLv3 TLSv1; 

upstream siteStage { 
    ip_hash; 
    server siteStage:5051; 
} 

server { 
    listen 443 ssl http2 ; 
    server_name subdomain.mysite.com; 

    ssl on; 
    ssl_certificate /path/provided.crt; 
    ssl_certificate_key /path/client.key; 
    ssl_client_certificate /path/ca.crt; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_verify_client  off; 

    location/{ 
    proxy_ssl_certificate   /etc/ssl/client.pem; 
    proxy_ssl_certificate_key  /etc/ssl/client.key; 
    proxy_ssl_protocols   TLSv1 TLSv1.1 TLSv1.2; 
    proxy_ssl_ciphers    HIGH:!aNULL:!MD5; 
    proxy_ssl_session_reuse on; 
    proxy_pass https://siteStage/; 
    } 
} 

답변

0

그것은 내의 nginx의 설정이었다 밝혀 여기에 내가 점점 오전의 nginx 오류입니다. 다음은 마침내 작동하게 된 방법입니다.

# No upstream 

server { 
    listen 80; 
    listen 443 ssl default_server; 
    server_name subdomain.mysite.com; 

    ssl on; 
    ssl_certificate /path/provided.crt; 
    ssl_certificate_key /path/client.key; 

    if ($scheme = http) { 
    return 301 https://$server_name$request_uri; 
    } 

    location/{ 
    proxy_pass http://siteStage:5051/; 
    proxy_set_header Host $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 "https"; 
    } 
} 
+0

그래서 해결책은 https 대신 http를 통해 도커 서비스에 문의하는 것이 었습니다. – mjb2kmn

+0

@ mjb2kmn 네, 프록시 헤더를 추가하고, 프록시 인증서를 삭제하고, nginx 튜토리얼에 마지막 2 개를 넣은 클라이언트 인증서를 삭제했습니다. –

관련 문제