스터디

SaaS에서 유저가 도메인 입력하는 건 어떻게 개발되나

행복한 수지아빠 2025. 2. 13. 11:51
반응형

SaaS 형태의 플랫폼에서 유저가 자신의 도메인을 사용할 수 있도록(DNS 설정을 받아서 연결) 하려면, 다음과 같은 주요 개념과 기술을 이해하고 적용해야 합니다.


1. 유저 도메인 연결 방식

SaaS에서 유저가 자신의 도메인을 연결하는 방식은 크게 두 가지로 나뉩니다.

CNAME 방식 (권장)

  • 사용자가 자신의 도메인을 CNAME 레코드를 통해 SaaS의 서브도메인(예: user.your-saas.com)에 매핑.
  • 일반적인 방법이며, 클라우드 기반 SaaS에서 널리 사용됨.
  • 단, 루트 도메인(Apex 도메인, 예: example.com)에는 CNAME을 사용할 수 없다는 제한이 있음.

설정 예시

blog.example.com CNAME user.your-saas.com

이 설정을 하면 blog.example.com으로 접속 시 user.your-saas.com의 서비스를 이용 가능.

A 레코드 방식

  • 사용자가 자신의 루트 도메인(example.com)을 SaaS 서비스의 고정 IP(A 레코드)로 설정.
  • SaaS 서버에서 해당 IP 요청을 해당 유저의 서비스로 매핑해야 함.
  • 클라우드 서비스 (AWS, GCP, Cloudflare 등)를 사용할 경우, 로드 밸런싱과 함께 적용 가능.

설정 예시

example.com A 192.0.2.1

2. DNS 설정 관리

유저가 도메인을 연결할 때, SaaS 플랫폼에서 다음을 고려해야 합니다.

SSL 인증서 자동 발급

  • 유저가 자신의 도메인을 연결하면 자동으로 SSL(TLS) 인증서를 발급해야 함.
  • Let's Encrypt + Certbot 또는 Cloudflare SSL 등을 활용 가능.
  • 예제: AWS Certificate Manager (ACM), Let's Encrypt 사용.

도메인 소유권 검증

  • 사용자가 SaaS 서비스에서 도메인을 연결했을 때, 그 도메인의 실제 소유자인지 검증해야 함.
  • 일반적인 방식:
    1. DNS TXT 레코드 검증
      • SaaS에서 제공하는 특정 값을 사용자가 자신의 도메인 DNS 설정에 추가하면 확인 가능.
    2. HTTP 파일 검증
      • 사용자가 자신의 도메인 웹 루트에 특정 파일을 업로드하면 검증 가능.

서브도메인 와일드카드 지원

  • 다수의 유저가 동일한 루트 도메인 내에서 개별 서브도메인을 사용할 경우 필요.
  • 예: *.your-saas.com → user1.your-saas.com, user2.your-saas.com
  • Cloudflare, AWS Route 53, GCP Cloud DNS 등에서 지원.

3. 개발해야 할 구성 요소

1) 유저가 도메인을 설정하는 관리 UI

  • 유저가 자신의 도메인을 추가하고, SaaS에서 이를 설정하는 UI 필요.
  • DNS 설정 가이드를 제공.

2) SaaS 서버에서 도메인 매핑 처리

  • 요청된 도메인이 SaaS 내부에서 어떤 유저의 서비스인지 매핑.
  • 이를 위해 Reverse Proxy (예: Nginx, Traefik, Caddy) 또는 Custom Routing Logic 필요.

3) SSL 인증서 자동화

  • Let's Encrypt + Certbot을 이용하여 자동으로 SSL 인증서 발급.
  • AWS, Cloudflare 등의 SSL 서비스를 활용할 수도 있음.

4) CDN 및 캐싱 처리

  • 유저 도메인이 빠르게 로딩되도록 Cloudflare, AWS CloudFront, GCP CDN 등을 활용.

4. 구현 예제

Nginx를 이용한 도메인 매핑

nginx.conf 예제:

server {
    listen 80;
    server_name ~^(?<subdomain>.+)\.your-saas\.com$;

    location / {
        proxy_pass http://backend/$subdomain;
    }
}
  • 위 설정을 이용하면 user1.your-saas.com은 backend/user1로 연결.

Let's Encrypt로 SSL 인증서 자동 발급

sudo certbot --nginx -d user.example.com
  • 유저가 도메인을 추가하면 자동으로 SSL 발급.

Cloudflare를 이용한 설정 자동화

Cloudflare API를 이용하여 CNAME을 자동 설정할 수도 있음.

curl -X POST "https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records" \
     -H "Authorization: Bearer {API_KEY}" \
     -H "Content-Type: application/json" \
     --data '{
       "type": "CNAME",
       "name": "user.example.com",
       "content": "your-saas.com"
     }'

5. 정리: SaaS 유저 도메인 연결을 위한 핵심 체크리스트

CNAME 방식 또는 A 레코드 방식 선택
DNS 소유권 검증 (TXT 또는 HTTP 방식)
SSL 인증서 자동 발급 (Let's Encrypt 또는 Cloudflare SSL)
도메인 매핑을 위한 Reverse Proxy 설정 (Nginx, Traefik 등)
CDN 및 성능 최적화 (Cloudflare, AWS CloudFront 등)
도메인 연결 UI 제공 및 관리 자동화 (Cloudflare API 등 활용 가능)

....

다음은 직접 Node express로 사용자 정의 도메인을 세팅하는 걸 알아보자

반응형