«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

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

스터디

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로 사용자 정의 도메인을 세팅하는 걸 알아보자

'스터디' 카테고리의 다른 글

MkDocs란 무엇인가  (0) 2025.02.13
SaaS에서 유저 도메인 설정 테스트  (0) 2025.02.13
NestJS에서의 Fail2Ban란  (0) 2025.02.12
Cursor AI Rule에 대해 기초 정리  (0) 2025.02.12
Access Token과 Refresh Token에 대한 이해  (0) 2025.02.12