로컬 개발 환경을 위한 Nginx 기반 역방향 프록시 서버입니다. Docker Compose를 사용하여 쉽게 설정하고 실행할 수 있으며, SSL/TLS 인증서를 자동으로 생성하여 HTTPS 연결을 지원합니다.
- 🔒 SSL/TLS 지원: mkcert를 사용한 로컬 개발용 SSL 인증서 자동 생성
- 🌐 멀티 도메인 지원: 여러 로컬 도메인을 통한 다중 애플리케이션 프록시
- 🚀 HTTP/2 지원: 최신 HTTP/2 프로토콜 지원
- 🐳 Docker 기반: Docker Compose를 통한 간편한 설정 및 배포
- ⚡ WebSocket 지원: 실시간 통신을 위한 WebSocket 프록시 설정
local-proxy-server/
├── docker-compose.yml # Docker Compose 설정 파일
├── certgen.sh # SSL 인증서 생성 스크립트
├── conf.d/
│ ├── default.conf # Nginx 프록시 설정
│ └── proxy_params # 프록시 헤더 설정
├── certs/ # SSL 인증서 디렉토리 (자동 생성됨)
└── README.md
macOS (Homebrew):
brew install mkcertUbuntu/Debian:
sudo apt install libnss3-tools
curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcertgit clone <repository-url>
cd local-proxy-serverchmod +x certgen.sh
./certgen.sh이 스크립트는 다음 도메인들에 대한 SSL 인증서를 생성합니다:
local.example1.comlocal.example2.comlocalhost127.0.0.1::1
로컬 도메인을 사용하기 위해 /etc/hosts 파일에 다음 항목을 추가하세요:
127.0.0.1 local.example1.com
127.0.0.1 local.example2.com
macOS/Linux:
sudo echo "127.0.0.1 local.example1.com" >> /etc/hosts
sudo echo "127.0.0.1 local.example2.com" >> /etc/hostsdocker-compose up -d현재 설정에서는 다음과 같이 프록시됩니다:
local.example1.com→localhost:3000local.example2.com→localhost:3001
새로운 애플리케이션을 프록시에 추가하려면:
conf.d/default.conf에 새로운 upstream과 server 블록 추가certgen.sh에 새로운 도메인 추가 (SSL 필요한 경우)/etc/hosts에 새로운 도메인 추가- 컨테이너 재시작:
docker-compose restart
새로운 애플리케이션 local.newapp.com을 포트 3002에 추가하는 경우:
conf.d/default.conf:
upstream newapp_app {
server host.docker.internal:3002;
}
server {
listen 80;
listen [::]:80;
server_name local.newapp.com;
location / {
proxy_pass http://newapp_app;
include /etc/nginx/conf.d/proxy_params;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name local.newapp.com;
ssl_certificate ./certs/cert.pem;
ssl_certificate_key ./certs/key.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
location / {
proxy_pass http://newapp_app;
include /etc/nginx/conf.d/proxy_params;
}
}-
로컬 애플리케이션들을 각각의 포트에서 실행:
# 터미널 1: 첫 번째 애플리케이션 cd /path/to/app1 npm start # 또는 해당 애플리케이션 실행 명령 (포트 3000) # 터미널 2: 두 번째 애플리케이션 cd /path/to/app2 npm start # 또는 해당 애플리케이션 실행 명령 (포트 3001)
-
브라우저에서 다음 URL로 접속:
http://local.example1.com또는https://local.example1.comhttp://local.example2.com또는https://local.example2.com
브라우저에서 SSL 인증서 오류가 발생하는 경우:
- mkcert가 제대로 설치되었는지 확인
- 인증서를 다시 생성:
./certgen.sh - 브라우저 캐시 삭제
애플리케이션에 연결할 수 없는 경우:
- 대상 애플리케이션이 정상적으로 실행 중인지 확인
- 포트 번호가 올바른지 확인
- Docker 컨테이너 상태 확인:
docker-compose ps - Nginx 로그 확인:
docker-compose logs nginx
도메인이 올바르게 해석되는지 확인:
nslookup local.example1.com
# 또는
ping local.example1.com# 모든 로그 보기
docker-compose logs
# Nginx 로그만 보기
docker-compose logs nginx
# 실시간 로그 보기
docker-compose logs -f nginx# 컨테이너 시작
docker-compose up -d
# 컨테이너 중지
docker-compose down
# 컨테이너 재시작
docker-compose restart
# 설정 변경 후 재빌드
docker-compose up -d --force-recreateMIT License
For the English version of this README, see README.en.md.