컨테이너가 포트 80에서 수신 대기 중인 경우 Nginx 역방향 프록시는 어떻게 트래픽을 올바른 Docker 컨테이너로 라우팅하도록 관리합니까?

컨테이너가 포트 80에서 수신 대기 중인 경우 Nginx 역방향 프록시는 어떻게 트래픽을 올바른 Docker 컨테이너로 라우팅하도록 관리합니까?

에 따르면이것웹 사이트에서 컨테이너 네트워크가 설정되면 각 컨테이너는 기본적으로 포트 80을 수신하므로 이로 인해 들어오는 트래픽 간에 충돌이 발생할 수 있습니다. 이 문제는 VIRTUAL_HOST 변수를 찾고 트래픽을 올바른 컨테이너로 라우팅하는 Nginx 역방향 프록시(포트 80에서도 수신 대기)를 사용하여 해결됩니다.

그러나 내가 이해하지 못하는 것이 있습니다. Nginx가 다른 모든 컨테이너와 마찬가지로 포트 80에서도 수신 대기하는 경우 트래픽 충돌 문제를 어떻게 해결합니까? Nginx가 포트 80에서 수신 대기 중이므로 충돌 문제가 계속 지속되어서는 안 됩니까? Nginx는 다른 컨테이너의 포트 번호에 관계없이 들어오는 모든 트래픽을 자동으로 캡처합니까? 나는 이 전체 개념이 꽤 혼란스럽다고 생각한다.

답변1

Nginx가 다른 모든 컨테이너와 마찬가지로 포트 80에서도 수신 대기하는 경우 트래픽 충돌 문제를 어떻게 해결합니까?

아마도 내가 기사를 잘못 읽었을 수도 있지만 "다른 모든 컨테이너"가 포트 80에서 수신 대기하지 않는 것 같습니다(강조 추가).

기본적으로 Docker 서비스는 모두 포트 80에서 수신 대기하므로 수신 트래픽에 충돌이 발생합니다. 물론 청취 포트를 변경할 수 있지만 누구도 자신이 즐겨찾는 사이트에 액세스하기 위해 Coolwebsite.com:34567을 입력하고 싶어하지 않습니다.

대신 nginx를 사용하여 Coolwebsite.com에 도착하는 트래픽을 34567 포트에서 수신하는 고유한 컨테이너로 라우팅하고 anothercoolwebsite.net에 도착하는 트래픽을 45678을 수신하는 두 번째 컨테이너로 라우팅할 수 있다면 어떨까요?

이 시나리오에서는 Nginx가 포트 80을 수신하는 유일한 웹 서버인 것 같습니다.

Nginx는 다른 컨테이너의 포트 번호에 관계없이 들어오는 모든 트래픽을 자동으로 캡처합니까?

Nginx는 포트 80의 모든 트래픽을 캡처합니다. 즉, 대부분의 소프트웨어 http://coolwebsite.com와 사실상 동일합니다 . http://coolwebsite.com:80그런 다음 Nginx는 호스트 이름에 따라 포트 80과 Docker 컨테이너가 실행 중인 포트 간에 트래픽을 중계합니다.

관련 정보