2017-12-18 4 views
0

백엔드 서비스에 https도 제공하는 Nginx를 사용하여 역방향 프록시를 설정하려고합니다.Docker-compose + Nginx SSL 역방향 프록시

저는 3 개의 컨테이너를 가지고 있습니다. 하나는 mongodb 용 컨테이너이고, 하나는 .NET 코어 백엔드 응용 프로그램 컨테이너이고 다른 하나는 리버스 프록시 컨테이너입니다.

도커 컨테이너는 제대로 작동하는 것처럼 보이며 HTTPS를 설정하기 전까지는 잘 작동합니다.

https://localhost:8080의 요청이 http 포트에서 실행중인 .NET 핵심 응용 프로그램으로 올바르게 변환되지 않는 것이 문제입니다.

문제점은 내 Nginx conf 파일에 있지만 문제를 해결하는 방법이 확실하지 않습니다. 내가 HTTP 요청을 할 때 ERR_SSL_PROTOCOL_ERROR를 반환합니다 https://localhost:8080를 사용하는 경우

worker_processes 1; 

events { worker_connections 1024; } 

http { 

    sendfile on; 

    upstream web { 
     server web:443; 
    } 

    server { 
     listen 8080; 

     location /upstream { 
      proxy_pass   https://web; 
      proxy_ssl_certificate  /etc/nginx/cert.pem; 
      proxy_ssl_certificate_key /etc/nginx/privkey.pem; 
      proxy_ssl_session_reuse on; 
      proxy_redirect  off; 
      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-Host $server_name; 
     } 
    } 

    server { 
     listen 443 ssl; 

     ssl_certificate_key /etc/nginx/privkey.pem; 
     ssl_client_certificate /etc/nginx/cert.pem; 
     ssl_verify_client  off; 

     location/{ 
      proxy_pass http://web; 
     } 
    } 
} 

, 병이 다시 502 잘못된 게이트웨이 오류를 얻을. 터미널에서

는 nginx를 컨테이너

enter image description here

어떤 아이디어를 반환?

+0

'제대로 번역되지 않았습니다.'라는게 무슨 뜻입니까? 오 - 당신은'X-Forwarded-Proto '를 추가하려고 할 것입니다. 그리고 여러분의 응용 프로그램은 그것을 신뢰할 필요가 있습니다. 아마 관련이있을 수 있습니다 : https://forums.iis.net/t/1178094.aspx?Rewriting+HTTPS+variable+based+ on + value + of + X + Forwarded + Proto – gusto2

+0

도움이된다면 다음과 같이 해보십시오 : https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion – Evis

답변

0

문서를 조금 읽은 후에는 해결책을 찾을 수있었습니다.

worker_processes 1; 

events { worker_connections 1024; } 

http { 

    sendfile on; 

    upstream web { 
     server web:80; 
    } 

    server { 
     listen 8080 ssl; 

     ssl_certificate   /etc/nginx/cert.pem; 
     ssl_certificate_key  /etc/nginx/privkey.pem; 

     location/{ 
      proxy_pass   http://web; 
      proxy_redirect  off; 
      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-Host $server_name; 
      proxy_set_header X-NginX-Proxy true; 
     } 
    } 
} 
관련 문제