도메인 및 라우팅 구조 - 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.ing은 Vercel,
lill.ing 및 api.lill.ing은 AWS EC2 (Nginx) 에서 운영된다.
- 리다이렉트는 301 (Permanent Redirect) 로 설정하여
브라우저 캐시 및 서버 부하를 동시에 최적화한다.
- Nginx를 단일 진입점으로 사용해 HTTPS 종료(SSL Termination) 및 트래픽 라우팅을 중앙집중화하였다.