강의

멘토링

로드맵

Inflearn Community Q&A

cylanokim0305's profile image
cylanokim0305

asked

Docker and Modern Server Technologies for Full Stack (Linux, nginx, AWS, HTTPS, Deployment) [Full Stack Part3]

Learning Reverse Proxy and Key nginx Web Server Configuration1

reverse proxy 할 때, nginx.conf와 dockerfile에 관하여 질문이 있습니다.

Written on

·

351

0

색션 11 reverse proxy 관련 문의 드릴 것이 있습니다.

reverse proxy 위하여 nginx.conf 파일에서 어떤 port로 요청이 오면 어떤 container 로 연결할지 설정해주고 있습니다. 가령 아래 코드는 8080 포트로 연결이 오면 docker-nginx로 포워딩하여 nginx라는 container의 80 포트로 연결을 합니다.

upstream docker-nginx {

server nginx:80

}

listen 8080

location /{

proxy_pass http://docker-nginx

}

즉 위와 같이 nginx.confd에는 외부 포트와 container간의 연결이 정의되어 있는데요.. docker-compose 파일을 보면 port라는 key로 proxy 서버의 포트 연결을 또 정의 합니다.

ports:

-"8080:8080"

-"8081:8081"

 

즉 nginx.conf에서 외부 포트와 container간의 연결을 설정하면 docker-compose 파일에서 port 연결 명령은 필요 없을까요?

네트워크linuxdocker

Answer 1

0

funcoding님의 프로필 이미지
funcoding
Instructor

안녕하세요. 답변 도우미입니다.

nginx.conf 파일에서 upstream과 location을 설정하여 요청을 특정 포트로 받으면 특정 컨테이너로 연결해주는 설정을 하고 있습니다. 예를 들어, 8080 포트로 요청이 오면 nginx라는 컨테이너의 80 포트로 포워딩해주는 설정은 다음과 같습니다:

```nginx

upstream docker-nginx {

server nginx:80;

}

server {

listen 8080;

location / {

proxy_pass http://docker-nginx;

}

}

```

이 설정은 reverse proxy 역할을 하는 nginx 서버의 설정입니다.

반면, docker-compose 파일에서 ports 키워드는 Docker 컨테이너의 호스트와 컨테이너 내부의 포트를 매핑하는 역할을 합니다. 예를 들어:

```yaml

services:

proxy:

image: nginx

ports:

- "8080:8080"

- "8081:8081"

```

이 설정은 호스트 머신의 8080 포트를 컨테이너의 8080 포트에 매핑하고, 호스트 머신의 8081 포트를 컨테이너의 8081 포트에 매핑하는 역할을 합니다.

이 두 설정은 상호 보완적인 역할을 합니다. nginx.conf 파일에서 reverse proxy 설정을 하더라도, docker-compose 파일에서 해당 컨테이너의 포트가 호스트와 연결되지 않으면 외부에서 접근이 불가능합니다. 따라서 docker-compose 파일에서 포트 매핑 설정은 여전히 필요합니다.

정리하자면:

- nginx.conf 파일: reverse proxy 설정 (외부 요청을 특정 컨테이너의 특정 포트로 포워딩)

- docker-compose.yml 파일: 호스트와 컨테이너 간의 포트 매핑 설정 (외부에서 해당 포트로 접근할 수 있도록 설정)

따라서 두 파일의 설정은 모두 필요하며, 각각의 역할을 이해하고 적절히 설정해야 합니다.

감사합니다.

잔재미코딩 드림

cylanokim0305's profile image
cylanokim0305

asked

Ask a question