๋ฉํฐ๋๋ฉ์ธ ์ค์ (Multi-Domain Configuration)
๊ฐ์
๋ฉํฐ๋๋ฉ์ธ์ด๋ Nginx ํ๋์์ ์์ ํ ๋ค๋ฅธ ์ฌ๋ฌ ๋๋ฉ์ธ์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค. example.com๊ณผ myproject.com, ๊ทธ๋ฆฌ๊ณ anothersite.io ๊ฐ์ ์ ํ ๋ค๋ฅธ ๋๋ฉ์ธ๋ค์ ํ ์๋ฒ์์ ๋ชจ๋ ๊ด๋ฆฌํ๋ ๊ฑฐ์ผ.
๋ง์น ๋น๋ฉ ๊ด๋ฆฌ์ธ์ฒ๋ผ ์๊ฐํด๋ณด์. ํ ๋ช
์ ๋น๋ฉ ๊ด๋ฆฌ์ธ์ด ์ฌ๋ฌ ๊ฑด๋ฌผ์ ๊ด๋ฆฌํ๋ ๊ฑฐ๋๊น, example.com ๊ฑด๋ฌผ ๋ฐฉ๋ฌธ๊ฐ์ 1๋ฒ ๊ฒ์ดํธ๋ก, myproject.com ๊ฑด๋ฌผ ๋ฐฉ๋ฌธ๊ฐ์ 2๋ฒ ๊ฒ์ดํธ๋ก ๋ณด๋ด๋ ์์ด๋ค.
๋ฉํฐ๋๋ฉ์ธ์ ์ฐ๋ฉด:
โข
โข
โข
โข
๋ฉํฐ๋๋ฉ์ธ ๊ตฌ์กฐ
graph TD
A["๐ฅ๏ธ Nginx ์๋ฒ<br/>203.0.113.10<br/>ํฌํธ 80, 443"]
B["๐ค Client 1<br/>example.com ์ ์"] -->|"์์ฒญ"| A
C["๐ค Client 2<br/>myproject.com ์ ์"] -->|"์์ฒญ"| A
D["๐ค Client 3<br/>anothersite.io ์ ์"] -->|"์์ฒญ"| A
A -->|"Host: example.com<br/>๋งค์นญ"| E["๐ Site 1<br/>/var/www/example"]
A -->|"Host: myproject.com<br/>๋งค์นญ"| F["๐ Site 2<br/>/var/www/myproject"]
A -->|"Host: anothersite.io<br/>๋งค์นญ"| G["๐ Site 3<br/>/var/www/anothersite"]
style A fill:#FFD700
style E fill:#87CEEB
style F fill:#90EE90
style G fill:#FFB366Mermaid
๋ณต์ฌ
์๋ธ๋๋ฉ์ธ vs ๋ฉํฐ๋๋ฉ์ธ vs ๊ฒฝ๋ก
๊ตฌ๋ถ | ๋ฉํฐ๋๋ฉ์ธ | ์๋ธ๋๋ฉ์ธ | ๊ฒฝ๋ก(Path) |
URL ์์ | example.com
myproject.com | api.example.com
admin.example.com | example.com/api
example.com/admin |
๋๋ฉ์ธ ๊ฐ์ | ์ฌ๋ฌ ๊ฐ | 1๊ฐ ๋ฉ์ธ | 1๊ฐ ๋ฉ์ธ |
DNS ์ค์ | ๊ฐ๊ฐ ํ์ | 1๊ฐ (์์ผ๋์นด๋) | ํ์์์ |
์ธ์ฆ์ | ๊ฐ๊ฐ ํ์ | 1๊ฐ (์์ผ๋์นด๋) | 1๊ฐ |
๊ตฌ์กฐ ๋ณต์ก๋ | |||
๋ฆฌ์์ค ๊ณต์ | |||
๋
๋ฆฝ์ฑ |
1๋จ๊ณ: DNS ๋ ์ฝ๋ ์ค์
๊ฐ ๋๋ฉ์ธ์ด ๊ฐ์ Nginx ์๋ฒ IP๋ก ํฅํ๋๋ก ์ค์ ํ๋ค.
graph LR
A["DNS Query<br/>example.com?"] -->|"A Record<br/>203.0.113.10"| X["๐ฅ๏ธ Nginx Server<br/>203.0.113.10"]
B["DNS Query<br/>myproject.com?"] -->|"A Record<br/>203.0.113.10"| X
C["DNS Query<br/>anothersite.io?"] -->|"A Record<br/>203.0.113.10"| X
style X fill:#FFD700Mermaid
๋ณต์ฌ
๊ฐ ๋๋ฉ์ธ ๋ฑ๋ก์ ์ฒด์์ ์ค์
example.com ๋๋ฉ์ธ (Namecheap, GoDaddy ๋ฑ)
Host | Type | Value |
@ | A | 203.0.113.10 |
www | A | 203.0.113.10 |
myproject.com ๋๋ฉ์ธ
Host | Type | Value |
@ | A | 203.0.113.10 |
www | A | 203.0.113.10 |
anothersite.io ๋๋ฉ์ธ
Host | Type | Value |
@ | A | 203.0.113.10 |
www | A | 203.0.113.10 |
ํ์ธ:
nslookup example.com # 203.0.113.10
nslookup myproject.com # 203.0.113.10
nslookup anothersite.io # 203.0.113.10
Bash
๋ณต์ฌ
2๋จ๊ณ: Nginx ์ค์
๊ธฐ๋ณธ ๊ตฌ์กฐ
# ============================================
# ๋๋ฉ์ธ 1: example.com
# ============================================
server {
listen 80;
server_name example.com www.example.com; # ๋ ๋ค ์ฒ๋ฆฌ
root /var/www/example;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# ============================================
# ๋๋ฉ์ธ 2: myproject.com
# ============================================
server {
listen 80;
server_name myproject.com www.myproject.com;
root /var/www/myproject;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# ============================================
# ๋๋ฉ์ธ 3: anothersite.io
# ============================================
server {
listen 80;
server_name anothersite.io www.anothersite.io;
root /var/www/anothersite;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Plain Text
๋ณต์ฌ
www๋ก ์๋ ๋ฆฌ๋ค์ด๋ ํธ
์ํฉ 1: www ์๋ ๋๋ฉ์ธ์ www ์๋ ๊ฑธ๋ก ๋ฆฌ๋ค์ด๋ ํธ
# example.com โ www.example.com์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
# ์ค์ ์ฒ๋ฆฌ๋ www.example.com์์
server {
listen 80;
server_name www.example.com;
root /var/www/example;
# ...
}
Plain Text
๋ณต์ฌ
์ํฉ 2: www ์๋ ๋๋ฉ์ธ์ www ์๋ ๊ฑธ๋ก ๋ฆฌ๋ค์ด๋ ํธ
# www.example.com โ example.com์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
# ์ค์ ์ฒ๋ฆฌ๋ example.com์์
server {
listen 80;
server_name example.com;
root /var/www/example;
# ...
}
Plain Text
๋ณต์ฌ
HTTPS + SSL ์ธ์ฆ์
์ํฉ๋ณ SSL ์ค์
์ํฉ 1: ๋๋ฉ์ธ๋ณ ๊ฐ๋ณ ์ธ์ฆ์
# ๊ฐ ๋๋ฉ์ธ๋ณ ์ธ์ฆ์ ๋ฐ๊ธ
certbot certonly --standalone -d example.com -d www.example.com
certbot certonly --standalone -d myproject.com -d www.myproject.com
certbot certonly --standalone -d anothersite.io -d www.anothersite.io
Bash
๋ณต์ฌ
Nginx ์ค์ :
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
server {
listen 443 ssl http2;
server_name myproject.com www.myproject.com;
ssl_certificate /etc/letsencrypt/live/myproject.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myproject.com/privkey.pem;
}
Plain Text
๋ณต์ฌ
๋ฉํฐ๋๋ฉ์ธ ์ธ์ฆ์ (ํ ๊ฐ ์ธ์ฆ์๋ก ์ฌ๋ฌ ๋๋ฉ์ธ)
# ํ ์ธ์ฆ์๋ก ์ฌ๋ฌ ๋๋ฉ์ธ ์ปค๋ฒ
certbot certonly --standalone \\
-d example.com -d www.example.com \\
-d myproject.com -d www.myproject.com \\
-d anothersite.io -d www.anothersite.io
Bash
๋ณต์ฌ
Nginx ์ค์ :
server {
listen 443 ssl http2;
server_name example.com www.example.com myproject.com www.myproject.com anothersite.io www.anothersite.io;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ๊ทธ๋ฐ๋ฐ ์ด ๋ฐฉ์์ ๊ถ์ฅํ์ง ์์์ (๊ฐ ๋๋ฉ์ธ๋ณ๋ก ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์)
}
Plain Text
๋ณต์ฌ
HTTP โ HTTPS ๋ฆฌ๋ค์ด๋ ํธ
# HTTP โ HTTPS
server {
listen 80;
server_name example.com www.example.com
myproject.com www.myproject.com
anothersite.io www.anothersite.io;
return 301 https://$server_name$request_uri;
}
Plain Text
๋ณต์ฌ
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
/var/www/
โโโ example/ # domain 1
โ โโโ html/
โ โ โโโ index.html
โ โ โโโ about.html
โ โ โโโ contact.html
โ โโโ uploads/ # ์
๋ก๋ ๋๋ ํ ๋ฆฌ
โ โโโ logs/
โ โโโ access.log
โ
โโโ myproject/ # domain 2
โ โโโ html/
โ โ โโโ index.html
โ โ โโโ dashboard.html
โ โโโ uploads/
โ
โโโ anothersite/ # domain 3
โโโ html/
โ โโโ index.html
โ โโโ blog/
โโโ uploads/
/etc/nginx/
โโโ nginx.conf # ๋ฉ์ธ ์ค์
โโโ conf.d/
โโโ example.com.conf
โโโ myproject.com.conf
โโโ anothersite.io.conf
Plain Text
๋ณต์ฌ
Nginx ์ค์ ํ์ผ ๋ถ๋ฆฌ (๊ถ์ฅ)
๊ตฌ์กฐ
cd /etc/nginx/conf.d/
Bash
๋ณต์ฌ
/etc/nginx/conf.d/example.com.conf
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example;
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com_error.log;
# ...
}
Plain Text
๋ณต์ฌ
/etc/nginx/conf.d/myproject.com.conf
server {
listen 80;
server_name myproject.com www.myproject.com;
root /var/www/myproject;
access_log /var/log/nginx/myproject.com_access.log;
error_log /var/log/nginx/myproject.com_error.log;
# ...
}
Plain Text
๋ณต์ฌ
/etc/nginx/conf.d vs /etc/nginx/sites-available
1. /etc/nginx/conf.d
/etc/nginx/conf.d/mysite.conf
Bash
๋ณต์ฌ
ํน์ง
โข
nginx.conf์์ ์ด๋ ๊ฒ ํฌํจ๋จ
include /etc/nginx/conf.d/*.conf;
Plain Text
๋ณต์ฌ
์ฅ์
โข
๋น ๋ฅด๊ณ ๊ฐ๋จ
โข
Docker / ํ
์คํธ ํ๊ฒฝ์ ์ต์
๋จ์
โข
ํ์ฑ/๋นํ์ฑ ๊ด๋ฆฌ ๋ถํธ
โ ๋๋ ค๋ฉด ํ์ผ ์ญ์ or ์ด๋ฆ ๋ณ๊ฒฝ
2. /etc/nginx/sites-available + sites-enabled
/etc/nginx/sites-available/mysite # ์์ฑ
/etc/nginx/sites-enabled/mysite # ํ์ฑํ (symlink)
Bash
๋ณต์ฌ
ํน์ง
include /etc/nginx/sites-enabled/*;
Plain Text
๋ณต์ฌ
์ฅ์
โข
์ฌ์ดํธ ON/OFF ์ฌ์
ln -s # ํ์ฑํ
rm # ๋นํ์ฑํ
Bash
๋ณต์ฌ
โข
์ด์ ์๋ฒ์์ ๊ด๋ฆฌ ๋งค์ฐ ํธํจ
โข
์ฌ๋ฌ ๋๋ฉ์ธ ๊ด๋ฆฌ์ ์ ๋ฆฌ
๋จ์
โข
ํ ๋จ๊ณ ๋ ์์ (์ด๋ณด์์๊ฒ ๋ฒ๊ฑฐ๋ก์)
์ฐจ์ด ํ๋์ ๋น๊ต
๊ตฌ๋ถ | conf.d | sites-available |
์ ์ฉ ๋ฐฉ์ | ์๋ | ์๋ ํ์ฑํ |
์ฌ๋ณผ๋ฆญ ๋งํฌ | ||
๊ด๋ฆฌ ํธ์์ฑ | ||
์ฌ์ฉ ํ๊ฒฝ | Docker / ๊ฐ๋จ ์๋ฒ | ์ด์ / ์ค๋ฌด |
๋นํ์ฑํ | ํ์ผ ์ญ์ | ๋งํฌ ์ ๊ฑฐ |
์ค๋ฌด ๊ฐ๊ฐ์ผ๋ก ์ ๋ฆฌ
์ถ์ฒ ๊ธฐ์ค
โข
๋น ๋ฅด๊ฒ ํ
์คํธ
conf.d
โข
์๋น์ค ์ด์
sites-available
ํ ์ค ์ ๋ฆฌ
conf.d๋ ์๋ ์คํ, sites-available์ ์น์ธ ํ ์คํ ๊ตฌ์กฐ
์ค์ ์์ : ๋๋ฉ์ธ๋ณ ๋ค๋ฅธ ์ค์
flowchart TD
A["ํด๋ผ์ด์ธํธ ์์ฒญ"]
B{"Host ํค๋ ํ์ธ"}
A -->|"์์ฒญ"| B
B -->|"example.com"| C["์ ์ ํ์ผ ์๋น<br/>(์ ์ ์ฌ์ดํธ)"]
B -->|"myproject.com"| D["๋ฆฌ๋ฒ์ค ํ๋ก์<br/>(API ๋ฐฑ์๋)"]
B -->|"anothersite.io"| E["WordPress<br/>(PHP)"]
C --> F["์๋ต"]
D --> F
E --> FMermaid
๋ณต์ฌ
# ============================================
# 1. example.com - ์ ์ ์ฌ์ดํธ
# ============================================
server {
listen 443 ssl http2;
server_name example.com www.example.com;
root /var/www/example;
index index.html;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ์ ์ ํ์ผ ์บ์ฑ
location ~* \\.(js|css|jpg|png|gif|ico|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
location / {
try_files $uri $uri/ =404;
}
}
# ============================================
# 2. myproject.com - API ๋ฐฑ์๋ (Spring Boot)
# ============================================
server {
listen 443 ssl http2;
server_name myproject.com www.myproject.com;
ssl_certificate /etc/letsencrypt/live/myproject.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myproject.com/privkey.pem;
# REST API ๋ฆฌ๋ฒ์ค ํ๋ก์
location / {
proxy_pass <http://localhost:8080>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# ============================================
# 3. anothersite.io - PHP (WordPress)
# ============================================
server {
listen 443 ssl http2;
server_name anothersite.io www.anothersite.io;
root /var/www/anothersite;
index index.php;
ssl_certificate /etc/letsencrypt/live/anothersite.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/anothersite.io/privkey.pem;
# PHP-FPM ์ฐ๊ฒฐ
location ~ \\.php$ {
fastcgi_pass unix:/var/run/php/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
# WordPress ํผ๋จธ๋งํฌ
location / {
try_files $uri $uri/ /index.php?$args;
}
}
# ============================================
# HTTP โ HTTPS ๋ฆฌ๋ค์ด๋ ํธ
# ============================================
server {
listen 80;
server_name example.com www.example.com myproject.com www.myproject.com anothersite.io www.anothersite.io;
return 301 https://$server_name$request_uri;
}
Plain Text
๋ณต์ฌ
์ฑ๋ฅ ์ต์ ํ
๋๋ฉ์ธ๋ณ ๋ก๊ทธ ๋ถ๋ฆฌ
server {
listen 80;
server_name example.com;
# domain 1์ ๋ก๊ทธ๋ง ๊ธฐ๋ก
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com_error.log warn;
# ...
}
server {
listen 80;
server_name myproject.com;
# domain 2์ ๋ก๊ทธ๋ง ๊ธฐ๋ก
access_log /var/log/nginx/myproject.com_access.log;
error_log /var/log/nginx/myproject.com_error.log warn;
# ...
}
Plain Text
๋ณต์ฌ
์์ถ ์ค์ (๋๋ฉ์ธ๋ณ)
server {
listen 80;
server_name example.com;
# ํ
์คํธ ์์ถ
gzip on;
gzip_types text/html text/plain text/css application/json application/javascript;
gzip_min_length 1000;
# ...
}
Plain Text
๋ณต์ฌ
๋๋ฉ์ธ๋ณ SSL ์ธ์ฆ์ ๊ด๋ฆฌ
๋๋ฉ์ธ | ์ธ์ฆ์ ๊ฒฝ๋ก | ๊ฐฑ์ ์ํ |
example.com | /etc/letsencrypt/live/example.com/ | |
myproject.com | /etc/letsencrypt/live/myproject.com/ | |
anothersite.io | /etc/letsencrypt/live/anothersite.io/ |
# ๋ชจ๋ ์ธ์ฆ์ ์๋ ๊ฐฑ์ ํ์ธ
certbot renew --dry-run
# ์ธ์ฆ์ ๋ชฉ๋ก
certbot certificates
# ํน์ ๋๋ฉ์ธ ๊ฐฑ์
certbot renew --cert-name example.com
Bash
๋ณต์ฌ
์ฃผ์์ฌํญ ๋ฐ ๋ฌธ์ ํด๊ฒฐ
1. ์ด์ํ ๋๋ฉ์ธ์ผ๋ก ์ ์ํ๋ฉด?
# ๋ฑ๋ก๋์ง ์์ ๋๋ฉ์ธ: curl -H "Host: unknown.com" <http://localhost>
# โ Nginx๋ ์ด๋ค server_name๊ณผ๋ ๋งค์นญ ์ ๋๋ฉด?
Bash
๋ณต์ฌ
ํด๊ฒฐ์ฑ
: ๊ธฐ๋ณธ ์๋ฒ ๋ธ๋ก ์ค์
# ๊ฐ์ฅ ๋จผ์ ์ ์๋ ์๋ฒ ๋ธ๋ก์ด ๊ธฐ๋ณธ๊ฐ ์ญํ
server {
listen 80 default_server; # ๐ default_server ์ถ๊ฐ
server_name _;
return 444; # ์ฐ๊ฒฐ ๋๊ธฐ
}
Plain Text
๋ณต์ฌ
2. SSL ์ธ์ฆ์ ๊ฐฑ์ ์คํจ
# ๋ฌธ์ : certbot์ด ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํ์ง ๋ชปํจ
# ์์ธ: ํฌํธ 80์ด๋ 443์ด ๋ซํ์์
# ํด๊ฒฐ์ฑ
certbot renew --force-renewal
# ๋๋ ์ด๋ฏธ ์คํ ์ค์ธ Nginx ์ ๊น ์ค์ง
sudo systemctl stop nginx
sudo certbot renew
sudo systemctl start nginx
Bash
๋ณต์ฌ
3. ํน์ ๋๋ฉ์ธ๋ง ๋๋ฆผ
# ๊ฐ ๋๋ฉ์ธ๋ณ ์๋ต ์๊ฐ ํ์ธ
curl -w "@curl-format.txt" -o /dev/null -s <https://example.com>
curl -w "@curl-format.txt" -o /dev/null -s <https://myproject.com>
# ๋๋ฉ์ธ๋ณ ์๋ฌ ๋ก๊ทธ ํ์ธ
tail -f /var/log/nginx/example.com_error.log
Bash
๋ณต์ฌ
์ฒดํฌ๋ฆฌ์คํธ
๊ฐ ๋๋ฉ์ธ DNS A ๋ ์ฝ๋ ์ค์ ์๋ฃ? (๋ชจ๋ ๊ฐ์ IP)
Nginx ์ค์ ํ์ผ์์ server_name ์ ํํ ์
๋ ฅ?
๊ฐ ๋๋ฉ์ธ์ฉ root ๋๋ ํ ๋ฆฌ ์์ฑ? (/var/www/example, /var/www/myproject)
nginx -t๋ก ์ค์ ํ
์คํธ?
systemctl reload nginx ์คํ?
๊ฐ ๋๋ฉ์ธ์ผ๋ก ์ ์ ํ
์คํธ? (curl -H "Host: example.com" <http://localhost>)
SSL ์ธ์ฆ์ ๋ฐ๊ธ ์๋ฃ? (๋๋ฉ์ธ๋ณ)
HTTP โ HTTPS ๋ฆฌ๋ค์ด๋ ํธ ์ค์ ?
๋๋ฉ์ธ๋ณ ๋ก๊ทธ ๋ถ๋ฆฌ ์ค์ ?
certbot renew ์๋ ์คํ ๋ฑ๋ก?
www ๋ฆฌ๋ค์ด๋ ํธ ์ค์ ?
๋ฐฉํ๋ฒฝ ํฌํธ 80, 443 ๊ฐ๋ฐฉ?
ํต์ฌ ์ ๋ฆฌ
๋ฉํฐ๋๋ฉ์ธ = ์์ ํ ๋ค๋ฅธ ์ฌ๋ฌ ๋๋ฉ์ธ์ 1๊ฐ Nginx ์๋ฒ์์ ๊ด๋ฆฌ
DNS ์ค์ = ๊ฐ ๋๋ฉ์ธ์ด ๊ฐ์ Nginx ์๋ฒ IP๋ก ํฅํ๊ฒ
server_name = HTTP Host ํค๋๋ก ์ด๋ ๋๋ฉ์ธ์ธ์ง ํ๋จ, ๊ฐ ๋ธ๋ก์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ
SSL ์ธ์ฆ์ = ๊ฐ ๋๋ฉ์ธ๋ณ ๊ฐ๋ณ ์ธ์ฆ์ ๋๋ ๋ฉํฐ๋๋ฉ์ธ ์ธ์ฆ์
๋ก๊ทธ ๋ถ๋ฆฌ = ๊ฐ ๋๋ฉ์ธ๋ณ access_log, error_log ๋ฐ๋ก ๊ด๋ฆฌ
์ฅ์ = ์๋ฒ ๋น์ฉ ์ ๊ฐ, ํตํฉ ๊ด๋ฆฌ, ๊ฐ๋จํ ๋ฆฌ์์ค ๊ณต์
๋จ์ = ๋ณต์ก๋ ์ฆ๊ฐ, ๋๋ฉ์ธ ์๋งํผ ์ค์ ๋ ์ฆ๊ฐ



