Skip to content

MechanicKim/local-proxy-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Local Proxy Server

로컬 개발 환경을 위한 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

사전 요구사항

  • Docker 및 Docker Compose
  • mkcert (SSL 인증서 생성용)

mkcert 설치

macOS (Homebrew):

brew install mkcert

Ubuntu/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/mkcert

설치 및 실행

1. 프로젝트 클론

git clone <repository-url>
cd local-proxy-server

2. SSL 인증서 생성

chmod +x certgen.sh
./certgen.sh

이 스크립트는 다음 도메인들에 대한 SSL 인증서를 생성합니다:

  • local.example1.com
  • local.example2.com
  • localhost
  • 127.0.0.1
  • ::1

3. hosts 파일 설정

로컬 도메인을 사용하기 위해 /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/hosts

4. 프록시 서버 실행

docker-compose up -d

설정

포트 매핑

현재 설정에서는 다음과 같이 프록시됩니다:

  • local.example1.comlocalhost:3000
  • local.example2.comlocalhost:3001

새로운 애플리케이션 추가

새로운 애플리케이션을 프록시에 추가하려면:

  1. conf.d/default.conf에 새로운 upstream과 server 블록 추가
  2. certgen.sh에 새로운 도메인 추가 (SSL 필요한 경우)
  3. /etc/hosts에 새로운 도메인 추가
  4. 컨테이너 재시작: 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. 로컬 애플리케이션들을 각각의 포트에서 실행:

    # 터미널 1: 첫 번째 애플리케이션
    cd /path/to/app1
    npm start  # 또는 해당 애플리케이션 실행 명령 (포트 3000)
    
    # 터미널 2: 두 번째 애플리케이션
    cd /path/to/app2
    npm start  # 또는 해당 애플리케이션 실행 명령 (포트 3001)
  2. 브라우저에서 다음 URL로 접속:

    • http://local.example1.com 또는 https://local.example1.com
    • http://local.example2.com 또는 https://local.example2.com

문제 해결

SSL 인증서 오류

브라우저에서 SSL 인증서 오류가 발생하는 경우:

  1. mkcert가 제대로 설치되었는지 확인
  2. 인증서를 다시 생성: ./certgen.sh
  3. 브라우저 캐시 삭제

프록시 연결 실패

애플리케이션에 연결할 수 없는 경우:

  1. 대상 애플리케이션이 정상적으로 실행 중인지 확인
  2. 포트 번호가 올바른지 확인
  3. Docker 컨테이너 상태 확인: docker-compose ps
  4. Nginx 로그 확인: docker-compose logs nginx

hosts 파일 설정 확인

도메인이 올바르게 해석되는지 확인:

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-recreate

라이선스

MIT License


For the English version of this README, see README.en.md.

About

Reverse proxy server for local development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages