서브도메인 vs 서브디렉토리: 파비콘 생성기 구현하기
웹 개발을 하다 보면 특정 기능이나 섹션을 위한 URL 구조를 결정해야 할 때가 있습니다. 이때 주로 고려되는 두 가지 방식이 서브도메인과 서브디렉토리입니다. 오늘은 파비콘 생성기를 예로 들어, 이 두 방식의 차이점과 각각의 구현 방법에 대해 알아보겠습니다.
서브도메인 vs 서브디렉토리: 기본 개념
- 서브도메인:
favicon-generator.withmake.kr
- 도메인 이름의 왼쪽에 추가되는 접두사
- 별도의 하위 도메인으로 취급됨
- 서브디렉토리:
withmake.kr/favicon-generator
- 도메인 이름 뒤에 추가되는 경로
- 같은 도메인 내의 하위 폴더로 취급됨
구현 방법 비교
1. 서브도메인 구현: favicon-generator.withmake.kr
DNS 설정
- DNS 관리 페이지에서 A 레코드 또는 CNAME 레코드 추가:
- A 레코드:
favicon-generator.withmake.kr
을 서버 IP 주소로 지정 - CNAME 레코드:
favicon-generator.withmake.kr
을withmake.kr
로 지정
- A 레코드:
웹 서버 설정
- Apache 설정 (가상 호스트):
apache Copy<VirtualHost *:80>
ServerName favicon-generator.withmake.kr
DocumentRoot /var/www/favicon-generator
</VirtualHost> - Nginx 설정:
nginx Copyserver {
listen 80;
server_name favicon-generator.withmake.kr;
root /var/www/favicon-generator;
}
파일 구조Copy
/var/www/withmake/
├── index.html
├── favicon-generator/
│ ├── index.html
│ ├── script.js
│ └── style.css
2. 서브디렉토리 구현: withmake.kr/favicon-generator
웹 서버 설정
- Apache 설정:
- 특별한 설정 필요 없음, DocumentRoot 내에 디렉토리 생성
- Nginx 설정:
nginx
server {
listen 80;
server_name withmake.kr;
root /var/www/withmake;
location /favicon-generator {
try_files $uri $uri/ /favicon-generator/index.html;
}
}
파일 구조
/var/www/withmake/
├── index.html
├── favicon-generator/
│
├── index.html
│
├── script.js
│
└── style.css
백엔드 구현 (Node.js Express 예시)
서브도메인
const express = require(‘express’);
const app = express();
app.use(express.static(‘public’));
app.get(‘/’, (req, res) => {
res.sendFile(__dirname + ‘/public/index.html’);
});
app.listen(3000, () => {
console.log(‘Server running on http://favicon-generator.withmake.kr:3000’);
});
서브디렉토리
const express = require(‘express’);
const app = express();
app.use(‘/favicon-generator’, express.static(‘public’));
app.get(‘/favicon-generator’, (req, res) => {
res.sendFile(__dirname + ‘/public/index.html’);
});
app.listen(3000, () => {
console.log(‘Server running on http://withmake.kr:3000/favicon-generator’);
});
선택 시 고려사항
- SEO: 일반적으로 서브디렉토리가 SEO에 더 유리합니다.
- 유지보수: 서브도메인은 별도의 환경으로 관리할 수 있어 대규모 프로젝트에 적합할 수 있습니다.
- 쿠키 및 보안: 서브도메인은 별도의 쿠키 관리가 필요할 수 있습니다.
- 확장성: 서브도메인은 완전히 다른 애플리케이션을 호스팅하기 쉽습니다.
결론
파비콘 생성기와 같은 기능을 구현할 때, 서브도메인과 서브디렉토리 중 어떤 방식을 선택할지는 프로젝트의 규모, SEO 요구사항, 기술 스택 등을 고려하여 결정해야 합니다. 작은 규모의 프로젝트라면 서브디렉토리 방식이 간단하고 SEO에 유리할 수 있습니다. 반면, 독립적인 대규모 서비스를 계획 중이라면 서브도메인 방식이 더 적합할 수 있습니다.