다양한 Docker화된 HTTPS 서비스의 역방향 프록싱

다양한 Docker화된 HTTPS 서비스의 역방향 프록싱

두 가지 서비스가 있는데 둘 다 깔끔하게 고정되어 있고 각각 고유한 docker-compose.yml.

각 서비스에는 고유한 도메인 이름이 있습니다.

두 서비스 모두 HTTPS를 사용하며 Lets Encrypt 인증서가 있습니다.

두 서비스 모두 완전히 독립적이며 80 및 443을 수신합니다.

.--[http]-[https]--.    .--[http]-[https]--.
|                  |    |                  |
|    Service A     |    |    Service B     |
|                  |    |                  |
'------------------'    '------------------'

동일한 호스트에서 두 서비스를 모두 시작할 수 있도록 역방향 프록시를 어떻게 설정합니까?

.--------------[http]-[https]--------------.
|                                          |
|              REVERSE PROXY               |
|                                          |
'---+--------+---------------+--------+----'
    |        |               |        |
   http     https           http     https
   req.     req.            req.     req.
   domainA  domainA         domainB  domainB
     |        |              |        |
     V        V              V        V
.--[http]-[https]--.    .--[http]-[https]--.
|                  |    |                  |
|    Service A     |    |    Service B     |
|                  |    |                  |
'------------------'    '------------------'

나는 서비스를 독립적으로 유지하고 싶습니다. 즉, 서비스 컨테이너에서 인증서를 추출하는 것을 피하고 싶습니다.

내 실험에 따르면 nginx는 인증서 없이는 HTTPS 요청을 전달할 수 없는 것 같습니다.것 같다이것을 달성하는 것이 가능해야 하는 것처럼. 아마도 다른 역방향 프록시 소프트웨어를 사용하고 있을까요?

나는 두 서비스를 모두 제어할 수 있습니다 docker-compose.yml. 필요한 경우 포트 등을 변경할 수 있습니다.

이상적으로는 다음과 같은 구성을 허용하는 간단한 데몬을 찾고 싶습니다.

[service a]
domain: domainA.tld
localPort: 8080

[service b]
domain: domainB.tld
localPort: 8081

미친 듯이 검색했지만 그런 도구를 찾지 못했습니다.

답변1

당신은jwilder/nginx-프록시, 자동화된 역방향 프록시 기능을 제공하고 간편한 docker-compose 통합이 함께 제공됩니다(서비스가 실행되는 포트와 서비스를 사용할 수 있는 도메인 등 몇 가지 환경 변수만 지정하면 됩니다).

다음을 사용하여 Let's Encrypt 인증서 생성을 자동화할 수도 있습니다.jrcs/letsencrypt-nginx-프록시-컴패니언.

관련 정보