하나의 서버에서 두 도메인 SSL 설정 방법

하나의 서버에서 2개의 웹 프론트 서버가 서로 다른 도메인으로 SSL(443포트) 사용 가능하다. 단, 아래 조건을 만족해야 한다.


✅ 전제 조건

  1. 도메인이 서로 다름
    • 예: a.example.com, b.example.com
  2. 각 도메인에 대해 유효한 SSL 인증서
    • Let’s Encrypt 등에서 도메인 별 인증서 발급
  3. 리버스 프록시(Web 서버)가 하나만 443 포트를 바인딩
    • Nginx나 Apache 같은 리버스 프록시를 사용해 도메인에 따라 백엔드 서버로 트래픽 분기

🧱 구조 예시

[Client]
   |
443 포트 요청 (도메인 A 또는 B)
   ↓
[Nginx Reverse Proxy]  (SSL 인증서 설정, 443 포트 점유)
   ├──> http://localhost:3001 (도메인 A용 웹 앱)
   └──> http://localhost:3002 (도메인 B용 웹 앱)
# nginx conf 예시

# a.example.com에 대한 설정
server {
    listen 443 ssl;
    server_name a.example.com;

    ssl_certificate     /etc/ssl/certs/a_cert.pem;
    ssl_certificate_key /etc/ssl/private/a_key.pem;

    location / {
        proxy_pass http://localhost:3001;
    }
}

# b.example.com에 대한 설정
server {
    listen 443 ssl;
    server_name b.example.com;

    ssl_certificate     /etc/ssl/certs/b_cert.pem;
    ssl_certificate_key /etc/ssl/private/b_key.pem;

    location / {
        proxy_pass http://localhost:3002;
    }
}

📝 요약

항목가능 여부설명
443 포트 공유 가능Nginx나 Apache 하나만 점유하고 도메인 분기로 분리
서로 다른 도메인 사용server_name으로 분기 가능
SSL 인증서 동시 적용도메인별 인증서 각각 설정 필요

📌 SSL 없이도 가능? (HTTP:80)

SSL 인증서를 사용하지 않고 하나의 서버에서 두 개의 웹 프론트 서버를 서로 다른 도메인으로 띄우는 것도 가능하다. 이 경우엔 443 포트가 아니라 80포트로 사용하게 된다.

✅ 요약: SSL 없이 가능한가?

조건가능 여부설명
SSL 없이 HTTP만 사용할 경우80 포트는 여러 도메인에서 공유 가능
도메인 별로 서비스 가능server_name으로 도메인 분기 가능
보안 (HTTPS) 없음모든 트래픽이 암호화되지 않음 (보안 취약)

⚠️ 주의할 점

  • 중간자 공격(MITM)에 취약 → 로그인, 개인정보 송수신이 있다면 반드시 SSL 사용 권장
  • 일부 브라우저에서는 HTTPS 필수로 요구 → 특히 PWA, 모바일 앱, OAuth, API 연동 등에서 문제 발생 가능

💬 결론

도메인이 있다면 포트를 나눌 필요 없음. Nginx 같은 리버스 프록시로 하나의 포트(80/443)에서 라우팅 가능

도메인이 없으면 포트를 나눠야 함. 각 서비스가 독립된 포트를 차지해야 하므로

댓글

댓글 남기기