작성
·
207
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 연결 명령은 필요 없을까요?
답변 1
0
안녕하세요. 답변 도우미입니다.
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
파일: 호스트와 컨테이너 간의 포트 매핑 설정 (외부에서 해당 포트로 접근할 수 있도록 설정)
따라서 두 파일의 설정은 모두 필요하며, 각각의 역할을 이해하고 적절히 설정해야 합니다.
감사합니다.
잔재미코딩 드림