Nginx 역방향 프록시에는 트래픽을 Docker 호스트 시스템으로 리디렉션할 때 내부 포트가 작동해야 합니다.

Nginx 역방향 프록시에는 트래픽을 Docker 호스트 시스템으로 리디렉션할 때 내부 포트가 작동해야 합니다.

나는 그 중 하나와 함께 실행되는 여러 도커 컨테이너가 있는 Linux 호스트 시스템을 사용해 왔습니다.Nginx 프록시 관리자(이제부터는 NPM) 이는 친숙한 UI를 갖춘 Nginx입니다.

NPM은 포트 80 및 443을 노출하고 지정된 프록시 규칙(일반적인 이전 역방향 프록시 구성)에 따라 트래픽을 각 컨테이너로 리디렉션합니다. 모든 컨테이너는 NPM이 쉽게 연결할 수 있도록 브리지 Docker 네트워크에 연결하도록 지시됩니다.

그 모든 것이 작동합니다. 이제 NPM을 사용하여 노출해야 하는 새로운 서비스가 있습니다. 차이점은 서비스가 컨테이너가 아닌 호스트 시스템에서 실행되고 포트 3711에서 연결할 수 있다는 것입니다.

조사를 해보니 다음과 같은 제안이 나왔습니다.

extra_hosts:
    - "host.docker.internal:host-gateway"

이를 NPM 서비스 아래의 docker-compose 파일에 추가하면 호스트 시스템의 모든 포트에 도달할 수 있으며 실제로 NPM 컨테이너 내에서 ping을 수행하여 host.docker.internal응답을 얻었습니다. 문제는 항상 그렇듯이 프록시 규칙을 설정한 후 다음과 같다는 것입니다.

여기에 이미지 설명을 입력하세요

ci-server.domain.com을 통해 인터넷에서 서비스에 연결하려고 하면 502가 표시됩니다. 하지만 ci-server.domain.com:3711을 사용하면 서비스에 연결할 수 있습니다!

도메인에 내부 포트를 추가해야 하는 이유는 무엇입니까?컨테이너에서 실행되는 다른 모든 서비스는 80/443에 응답하고 내부적으로 해당 포트로 리디렉션됩니다.

관련 정보