도메인 및 라우팅 구조 - LeeEuyJoon/lilling-be GitHub Wiki

1. 개요

본 문서는 Lilling (Little Linking) 서비스의 도메인 라우팅 및 프록시 정책을 정의한다.
서비스의 특성상 하나의 도메인이 여러 역할을 수행하므로, 각 경로를 명확히 분리하여 설계하였다.

Lilling은 다음 세 가지 주요 경로로 요청을 분기한다.

구분 요청 예시 목적지 설명
프론트엔드 UI https://www.lill.ing/ Vercel 메인 웹사이트 (React + Next.js 기반)
리다이렉트 요청 https://lill.ing/{shortCode} EC2 → Nginx → Spring Boot 단축 URL 접근 시 원본 URL로 리다이렉트
API 요청 https://api.lill.ing/api/v1/... EC2 → Nginx → Spring Boot URL 생성 및 통계 등 백엔드 엔드포인트

2. 도메인 구조 및 역할

도메인 역할 호스팅
www.lill.ing 프론트엔드 UI (Next.js) Vercel
lill.ing 리다이렉트 전용 (Apex 도메인) AWS EC2 (Nginx)
api.lill.ing 백엔드 API AWS EC2 (Nginx → Spring Boot)

3. 요청 흐름도

사용자 요청
 ├── https://lill.ing/               → Nginx → 301 Redirect → https://www.lill.ing
 ├── https://lill.ing/{shortCode}    → Nginx → Spring Boot → 원본 URL (301 혹은 리다이렉트)
 ├── https://api.lill.ing/api/...    → Nginx → Spring Boot (API 처리)
 └── https://www.lill.ing/           → Vercel (정적 리소스 / SSR 페이지)

4. Nginx 라우팅 정책


http {
        # (...)

        # 루트 요청 → 프론트엔드로 리다이렉트
        location = / {
            return 301 https://www.lill.ing;
        }

        # API 요청 → 백엔드 프록시
        location /api/ {
            proxy_pass http://lilling-be:8080;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }

        # 단축 URL 패턴 → 백엔드 리다이렉트 컨트롤러
        location ~ ^/[0-9A-Za-z]+$ {
            proxy_pass http://lilling-be:8080;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
        }

        # 그 외 경로 → 404 반환
        location / {
            return 404;
        }
    }
}

5. 요청별 동작 요약

요청 Nginx 매칭 처리 결과
https://lill.ing/ location = / https://www.lill.ing 으로 301 Redirect
https://lill.ing/AbC123 location ~ ^/[0-9A-Za-z]+$ 백엔드 프록시 후 원본 URL로 301 혹은 리다이렉트
https://api.lill.ing/api/v1/url/shorten location /api/ 백엔드 API 호출
기타 경로 location / 404 Not Found

6. 참고 사항

  • www.lill.ingVercel,
    lill.ingapi.lill.ingAWS EC2 (Nginx) 에서 운영된다.
  • 리다이렉트는 301 (Permanent Redirect) 로 설정하여
    브라우저 캐시 및 서버 부하를 동시에 최적화한다.
  • Nginx를 단일 진입점으로 사용해 HTTPS 종료(SSL Termination)트래픽 라우팅을 중앙집중화하였다.