반응형
포트 직접 접근에서 프록시 네트워크 방식으로 전환한 이유
기존에는 아래처럼 포트를 직접 열어서 접근했다.
http://도메인:8080
http://도메인:9000
이 방식은 간단하지만, 운영 환경에서는 여러 문제가 있다.
포트 직접 노출 방식의 한계
- 서비스가 늘어날수록 포트 관리 지옥
- 방화벽, 보안 장비 설정 복잡
- 서비스 구조가 외부에 그대로 노출
- HTTPS 적용 시 서비스마다 설정 필요
“서비스가 많아질수록 관리 포인트가 기하급수적으로 늘어난다.”
프록시 네트워크 방식이란?
외부에서는 단 하나의 진입점(WEB) 만 바라보고 실제 서비스들은 Docker 내부 네트워크에서만 통신하게 만드는 구조다.
외부 사용자
↓ HTTPS
[Nginx Reverse Proxy]
↓ Docker Network
[서비스 / 배치 / 관리자]
#Reverse Proxy : 요청을 대신 받아 내부 서비스로 전달
#Docker Network : 컨테이너 간 전용 가상 네트워크
#Expose : 외부 노출 없이 내부 통신만 허용
1. Docker 네트워크 기반 서비스 분리
외부 포트는 Nginx만 사용
ports:
- "80:80"
- "443:443"
내부 서비스는 expose만 사용
expose:
- "8080"
2. Docker Compose – 프록시 네트워크 구성
/* docker-compose.yml */
services:
nginx:
image: nginx:stable
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
//생략
depends_on:
//생략
networks:
- proxy-net
app:
build: //생략
container_name: //생략
expose:
- "8080"
networks:
- proxy-net
networks:
proxy-net:
external: true
- app은 포트 공개 X
- nginx만 외부 진입
3. Nginx Reverse Proxy 설정
// ./nginx/nginx.conf
server {
listen 443 ssl;
server_name 도메인;
//SSL 설정 (생략)
location / {
proxy_pass http://app:8080;
# 클라이언트 정보 전달 (중요)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
4. 경로 기반 서비스 분리 (test 예시)
// ./nginx/nginx.conf
server {
//SSL, 도메인명, 포트설정 생략
location / {
proxy_pass http://app:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /test/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://test:9000/;
}
}
위와 같이 설정할 경우 http://도메인/test 경로를 통해 접근 가능
마무리
포트를 직접 여는 방식은 개발 단계에서는 편하지만
운영 환경에서는 프록시 네트워크가 사실상 필수에 가깝다.
특히 Docker 환경에서는 Reverse Proxy + Docker Network 조합이 가장 현실적이고 안정적인 선택이었다.

반응형
'Dev > CS' 카테고리의 다른 글
| 🐳 도커(Docker) 기본 개념과 용어 정리 (0) | 2026.01.20 |
|---|---|
| [CS] 해싱과 암호화의 차이점 (2) | 2025.03.17 |
| [CS] Base62 vs Base64 비교 및 용도별 적합성 (0) | 2025.03.12 |
| [DNS] MX 레코드 확인 방법 (0) | 2025.02.10 |
| DKIM과 DMARC 이란? (0) | 2025.01.02 |