๋๋ฉ์ธ ์ฐ๊ฒฐ (Domain Connection)
๊ฐ์
๋๋ฉ์ธ ์ฐ๊ฒฐ์ด๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ฃผ์(๊ตญ๋ฃฐ.com)๋ฅผ ๋ด ์๋ฒ IP ์ฃผ์(203.0.113.10)์ ์ฐ๊ฒฐํ๋ ์์
์ด๋ค.
์ธํฐ๋ท ์ธ์์์ ์ฃผ์๋ ์๋ ์ซ์(IP)์์. ๊ทธ๋ฐ๋ฐ 203.0.113.10์ ์ธ์ฐ๊ณ ๋ค๋๊ธฐ์ ๋๋ฌด ๋ถํธํ์์์? ๊ทธ๋์ "๊ตญ๋ฃฐ.com" ๊ฐ์ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ์ด๋ฆ์ IP์ ์ฐ๊ฒฐํด์ฃผ๋ ์์คํ
์ด DNS(Domain Name System)์์.
๋๋ฉ์ธ ์ฐ๊ฒฐ ๊ณผ์ ์ ํฌ๊ฒ ๋ ๋จ๊ณ์์:
1.
DNS ๋ ์ฝ๋ ์ค์ โ "์ด ๋๋ฉ์ธ์ ์ด IP์ผ!" ๋ผ๊ณ DNS ์๋ฒ์ ๋ฑ๋ก
2.
Nginx ์ค์ โ ํด๋น ๋๋ฉ์ธ์ผ๋ก ์์ฒญ์ด ๋ค์ด์์ ๋ ์ด๋ค ํ์ผ์ ๋ณด์ฌ์ค์ง ์ค์
์ ์ฒด ํ๋ฆ
sequenceDiagram
participant ๋ธ๋ผ์ฐ์ as ๐ ๋ธ๋ผ์ฐ์
participant DNS as ๐ DNS ์๋ฒ<br/>(์นดํ24 ๋ค์์๋ฒ)
participant Nginx as ๐ฅ๏ธ Nginx ์๋ฒ<br/>203.0.113.10
๋ธ๋ผ์ฐ์ ->>DNS: ๊ตญ๋ฃฐ.com ์ IP๊ฐ ๋ญ์ผ?
DNS-->>๋ธ๋ผ์ฐ์ : 203.0.113.10 ์ด์ผ!
๋ธ๋ผ์ฐ์ ->>Nginx: GET <http://๊ตญ๋ฃฐ.com>
Note over Nginx: server_name ๊ตญ๋ฃฐ.com ๋ธ๋ก ๋งค์นญ
Nginx-->>๋ธ๋ผ์ฐ์ : /var/www/krules/index.html ๋ฐํMermaid
๋ณต์ฌ
๋๋ฉ์ธ ์ ํ๋ณ ์ค์ ๋ฐฉ๋ฒ ๋น๊ต
๊ตฌ๋ถ | ๋๋ฉ์ธ ๊ตฌ์
์ฒ | ๋ค์์๋ฒ | DNS ์ค์ ์์น |
์นดํ24 ๊ตฌ์
๋๋ฉ์ธ | ์นดํ24 | ์นดํ24 ๋ค์์๋ฒ (๊ธฐ๋ณธ) | ์นดํ24 ๋๋ฉ์ธ ๊ด๋ฆฌ |
์ธ๋ถ ๊ตฌ์
๋๋ฉ์ธ | ๊ฐ๋น์, ํ์ด์ฆ ๋ฑ | ์นดํ24 ๋ค์์๋ฒ๋ก ๋ณ๊ฒฝ ํ์ | ์นดํ24 ๋๋ฉ์ธ ๊ด๋ฆฌ |
์ธ๋ถ ๊ตฌ์
๋๋ฉ์ธ | ๊ฐ๋น์, ํ์ด์ฆ ๋ฑ | ์ธ๋ถ ๋ค์์๋ฒ ์ ์ง | ์ธ๋ถ ๋๋ฉ์ธ ์
์ฒด DNS ๊ด๋ฆฌ |
๋ฐฉ๋ฒ 1: ์นดํ24์์ ๊ตฌ์
ํ ๋๋ฉ์ธ
์นดํ24์์ ์ฐ ๋๋ฉ์ธ์ ์ด๋ฏธ ์นดํ24 ๋ค์์๋ฒ๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ์ค์ ์ด ๋น๊ต์ ๊ฐ๋จํด์!
graph LR
A["์นดํ24 ๋๋ฉ์ธ ๊ตฌ์
"] --> B["์นดํ24 ๋ค์์๋ฒ<br/>์๋ ์ ์ฉ"]
B --> C["์นดํ24 DNS ๊ด๋ฆฌ ๋ฉ๋ด์์<br/>A ๋ ์ฝ๋ ์ถ๊ฐ"]
C --> D["๊ตญ๋ฃฐ.com โ 203.0.113.10
์ฐ๊ฒฐ ์๋ฃ"]
style D fill:#90EE90Mermaid
๋ณต์ฌ
DNS A ๋ ์ฝ๋ ์ค์ ๊ฒฝ๋ก
์นดํ24 ๋ก๊ทธ์ธ
โ ๋์ ์๋น์ค ๊ด๋ฆฌ
โ ๋๋ฉ์ธ ๊ด๋ฆฌ
โ ๋๋ฉ์ธ ๋ถ๊ฐ์๋น์ค
โ DNS ๊ด๋ฆฌ
โ A ๋ ์ฝ๋ ์ถ๊ฐ
Plain Text
๋ณต์ฌ
A ๋ ์ฝ๋ ์
๋ ฅ๊ฐ
ํธ์คํธ๋ช
| ํ์
| IP ์ฃผ์ | TTL |
@ | A | 203.0.113.10 | 300 |
www | A | 203.0.113.10 | 300 |
โข
@ = ๋ฃจํธ ๋๋ฉ์ธ (๊ตญ๋ฃฐ.com)
โข
www = www.๊ตญ๋ฃฐ.com
โข
TTL = DNS ์บ์ ์ ์ง ์๊ฐ(์ด). ์ฒ์์ 300์ด(5๋ถ)์ผ๋ก ์งง๊ฒ โ ์์ ํ 3600์ผ๋ก ๋๋ ค๋ OK
๋ฐฉ๋ฒ 2: ์ธ๋ถ์์ ๊ตฌ์
ํ ๋๋ฉ์ธ
๊ฐ๋น์, ํ์ด์ฆ, ๋ค์์นฉ(Namecheap) ๋ฑ ๋ค๋ฅธ ๊ณณ์์ ๊ตฌ์
ํ๋ค๋ฉด ๋ค์์๋ฒ๋ฅผ ์นดํ24๋ก ๋ฐ๊พธ๊ฑฐ๋, ํด๋น ์
์ฒด DNS ์ค์ ์์ ์ง์ A ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋ผ์.
graph TD
A["์ธ๋ถ ์
์ฒด์์<br/>๋๋ฉ์ธ ๊ตฌ์
"] --> B{"์ด๋์ DNS๋ฅผ<br/>๊ด๋ฆฌํ ๊น?"}
B -->|"์นดํ24์์ ํตํฉ ๊ด๋ฆฌ"| C["์ธ๋ถ ์
์ฒด ์ฌ์ดํธ์์<br/>๋ค์์๋ฒ๋ฅผ ์นดํ24๋ก ๋ณ๊ฒฝ"]
B -->|"์ธ๋ถ ์
์ฒด์์ ์ง์ ๊ด๋ฆฌ"| D["์ธ๋ถ ์
์ฒด DNS ์ค์ ์์<br/>์ง์ A ๋ ์ฝ๋ ์ถ๊ฐ"]
C --> E["์นดํ24 DNS ๊ด๋ฆฌ์์<br/>A ๋ ์ฝ๋ ์ถ๊ฐ"]
D --> F["์ค์ ์๋ฃ"]
E --> F
style F fill:#90EE90Mermaid
๋ณต์ฌ
๋ฐฉ๋ฒ 2-A: ๋ค์์๋ฒ๋ฅผ ์นดํ24๋ก ๋ณ๊ฒฝ
์ธ๋ถ ์
์ฒด ๋๋ฉ์ธ ๊ด๋ฆฌ ํ์ด์ง์์ ๋ค์์๋ฒ๋ฅผ ์๋๋ก ๊ต์ฒด:
๊ธฐ์กด ๋ค์์๋ฒ (์: ๊ฐ๋น์)
ns1.gabia.net
ns2.gabia.net
โ ์นดํ24 ๋ค์์๋ฒ๋ก ๋ณ๊ฒฝ
ns1.cafe24.com
ns2.cafe24.com
Plain Text
๋ณต์ฌ
๋ค์์๋ฒ ๋ณ๊ฒฝ์ ์ ํ์ ์ต๋ 24~48์๊ฐ์ด ๊ฑธ๋ ค์. ๋ณ๊ฒฝ ํ ๋ฐ๋ก ์ ์ฉ ์ ๋๋ค๊ณ ๋นํฉํ์ง ๋ง์ธ์!
๋ณ๊ฒฝ ํ ์นดํ24 DNS ๊ด๋ฆฌ์์ A ๋ ์ฝ๋ ์ถ๊ฐ (๋ฐฉ๋ฒ 1๊ณผ ๋์ผ)
๋ฐฉ๋ฒ 2-B: ์ธ๋ถ ์ ์ฒด DNS์์ ์ง์ ์ค์
๋ค์์๋ฒ ๋ณ๊ฒฝ ์์ด ์ธ๋ถ ์
์ฒด DNS ์ค์ ์์ A ๋ ์ฝ๋๋ง ์ถ๊ฐ:
ํธ์คํธ๋ช
| ํ์
| ๊ฐ | TTL |
@ | A | 203.0.113.10 | 300 |
www | A | 203.0.113.10 | 300 |
๊ฐ๋น์, ํ์ด์ฆ, Namecheap ๋ชจ๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์ค์ ํด์.
DNS ์ ํ ํ์ธ
DNS ์ค์ ํ ์ ๋๋ก ์ ์ฉ๋๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์ด์์.
# ๋ฆฌ๋
์ค/๋งฅ
nslookup ๊ตญ๋ฃฐ.com
# ๊ฒฐ๊ณผ ์์
Name: ๊ตญ๋ฃฐ.com
Address: 203.0.113.10 โ ๋ด ์๋ฒ IP ๊ฐ ๋์ค๋ฉด ์ฑ๊ณต!
# ๋๋
dig ๊ตญ๋ฃฐ.com +short
# ๊ฒฐ๊ณผ: 203.0.113.10
# Windows
nslookup ๊ตญ๋ฃฐ.com
Bash
๋ณต์ฌ
Nginx ์ค์
DNS๊ฐ ๋ด ์๋ฒ IP๋ฅผ ํฅํ๊ฒ ๋์ผ๋ฉด, Nginx๊ฐ ๊ทธ ๋๋ฉ์ธ์ ๋ฐ์์ ์ฌ๋ฐ๋ฅธ ํ์ผ์ ์๋นํ๋๋ก ์ค์ ํด์ค์ผ ํด์!
์ค์ ํ์ผ ๊ตฌ์กฐ โ ๋ ๊ฐ์ง ๋ฐฉ์ ๋น๊ต
graph TD
subgraph "๋ฐฉ์ A: conf.d"
A1["/etc/nginx/nginx.conf<br/>include conf.d/*.conf"]
A1 --> A2["/etc/nginx/conf.d/<br/>krules.conf"]
end
subgraph "๋ฐฉ์ B: sites-available + sites-enabled"
B1["/etc/nginx/nginx.conf<br/>include sites-enabled/*"]
B1 --> B2["/etc/nginx/sites-enabled/<br/>krules โ ์ฌ๋ณผ๋ฆญ ๋งํฌ"]
B2 -.->|"ln -s"| B3["/etc/nginx/sites-available/<br/>krules (์ค์ ํ์ผ)"]
end
style A2 fill:#87CEEB
style B2 fill:#90EE90
style B3 fill:#FFD700Mermaid
๋ณต์ฌ
๊ตฌ๋ถ | conf.d ๋ฐฉ์ | sites-available/enabled ๋ฐฉ์ |
ํ์ผ ์์น | /etc/nginx/conf.d/ | /etc/nginx/sites-available/ |
ํ์ฑํ ๋ฐฉ๋ฒ | ํ์ผ์ ํด๋์ ๋ฃ์ผ๋ฉด ์๋ ์ ์ฉ | ln -s๋ก ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ |
๋นํ์ฑํ ๋ฐฉ๋ฒ | ํ์ผ ์ญ์ ๋๋ .bak ๋ณ๊ฒฝ | ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ง ์ญ์ (์๋ณธ ๋ณด์กด) |
์ฅ์ | ๋จ์, ๋น ๋ฆ | ์ค์ ๋ณด์กดํ๋ฉฐ ์ฌ์ดํธ on/off ๊ฐ๋ฅ |
์ฃผ๋ก ์ฌ์ฉ | CentOS, ์ง์ ์ปดํ์ผ ์ค์น | Ubuntu/Debian apt ์ค์น |
Ubuntu์์ apt install nginx ๋ก ์ค์นํ๋ฉด sites-available / sites-enabled ํด๋๊ฐ ๊ธฐ๋ณธ ์์ฑ๋ผ์.
๋ฐฉ์ A: conf.d (๊ฐ๋จํ ๋ฐฉ๋ฒ)
# ์ค์ ํ์ผ ์์ฑ
sudo nano /etc/nginx/conf.d/krules.conf
Bash
๋ณต์ฌ
server {
listen 80;
server_name ๊ตญ๋ฃฐ.com www.๊ตญ๋ฃฐ.com;
root /var/www/krules;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
access_log /var/log/nginx/krules_access.log;
error_log /var/log/nginx/krules_error.log warn;
}
Plain Text
๋ณต์ฌ
# ํ
์คํธ ํ ์ ์ฉ
sudo nginx -t
sudo systemctl reload nginx
Bash
๋ณต์ฌ
๋ฐฉ์ B: sites-available + sites-enabled (Ubuntu ๊ถ์ฅ)
flowchart LR
A["1. sites-available ์<br/>์ค์ ํ์ผ ์์ฑ"] --> B["2. sites-enabled ์<br/>์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ<br/>(ln -s)"]
B --> C["3. nginx -t ํ
์คํธ"]
C --> D["4. systemctl reload nginx"]
D --> E["โ
์ฌ์ดํธ ํ์ฑํ"]Mermaid
๋ณต์ฌ
# 1. ์ค์ ์ค์ ํ์ผ์ sites-available ์ ์์ฑ
sudo nano /etc/nginx/sites-available/krules
Bash
๋ณต์ฌ
server {
listen 80;
server_name ๊ตญ๋ฃฐ.com www.๊ตญ๋ฃฐ.com;
root /var/www/krules;
index index.html;
location / {
try_files $uri $uri/ =404;
}
location ~* \\.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
access_log /var/log/nginx/krules_access.log;
error_log /var/log/nginx/krules_error.log warn;
}
Plain Text
๋ณต์ฌ
# 2. sites-enabled ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์์ฑ (์ฌ์ดํธ ํ์ฑํ)
sudo ln -s /etc/nginx/sites-available/krules /etc/nginx/sites-enabled/
# ๋งํฌ ํ์ธ
ls -la /etc/nginx/sites-enabled/
# lrwxrwxrwx krules -> /etc/nginx/sites-available/krules
# 3. ๊ธฐ๋ณธ ์ค์ (default) ๋นํ์ฑํ (์ถฉ๋ ๋ฐฉ์ง)
sudo rm /etc/nginx/sites-enabled/default
# 4. ํ
์คํธ ํ ์ ์ฉ
sudo nginx -t
sudo systemctl reload nginx
Bash
๋ณต์ฌ
์ฌ์ดํธ ๋นํ์ฑํ ๋ฐฉ๋ฒ (์ค์ ํ์ผ์ ๋ณด์กด)
# ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ง ์ญ์ โ sites-available ์๋ณธ์ ์ ์ง
sudo rm /etc/nginx/sites-enabled/krules
sudo systemctl reload nginx
# ๋ค์ ํ์ฑํ
sudo ln -s /etc/nginx/sites-available/krules /etc/nginx/sites-enabled/
sudo systemctl reload nginx
Bash
๋ณต์ฌ
๋๋ ํ ๋ฆฌ ์์ฑ ๋ฐ index.html ์ค๋น
# ์ฌ์ดํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ ์์ฑ
sudo mkdir -p /var/www/krules
# ํ
์คํธ์ฉ index.html ์์ฑ
sudo nano /var/www/krules/index.html
Bash
๋ณต์ฌ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>๊ตญ๋ฃฐ๋ท์ปด</title>
</head>
<body>
<h1>๐ ๊ตญ๋ฃฐ.com ์ฐ๊ฒฐ ์ฑ๊ณต!</h1>
<p>Nginx ์ ์ ํ์ผ ์๋น ์ค์
๋๋ค.</p>
</body>
</html>
HTML
๋ณต์ฌ
๋ฐฉํ๋ฒฝ ์ด๊ธฐ
# UFW ์ฌ์ฉ ์
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status
Bash
๋ณต์ฌ
์ค์ต: ๊ตญ๋ฃฐ.com ์ฐ๊ฒฐ
flowchart TD
A["๐ ์ค์ต ์์"] --> B["1. DNS A ๋ ์ฝ๋ ์ถ๊ฐ<br/>๊ตญ๋ฃฐ.com โ ์๋ฒ IP"]
B --> C["2. DNS ์ ํ ํ์ธ<br/>nslookup ๊ตญ๋ฃฐ.com"]
C --> D{"IP๊ฐ ๋ด ์๋ฒ?"}
D -->|"No"| E["์ ์ ๋๊ธฐ ํ<br/>์ฌํ์ธ (์ต๋ 24h)"]
D -->|"Yes"| F["3. ๋๋ ํ ๋ฆฌ ์์ฑ<br/>mkdir -p /var/www/krules"]
E --> C
F --> G["4. index.html ์์ฑ"]
G --> H["5. Nginx ์ค์ ์์ฑ<br/>/etc/nginx/conf.d/krules.conf"]
H --> I["6. nginx -t ํ
์คํธ"]
I --> J["7. systemctl reload nginx"]
J --> K["โ
๋ธ๋ผ์ฐ์ ์์ ๊ตญ๋ฃฐ.com ์ ์ ํ์ธ"]
style K fill:#90EE90
style E fill:#FFB366Mermaid
๋ณต์ฌ
์ค์ต ํ๊ฒฝ
ํญ๋ชฉ | ๊ฐ |
๋๋ฉ์ธ | ๊ตญ๋ฃฐ.com |
์๋ฒ IP | 203.0.113.10 (๋ณธ์ธ IP๋ก ๊ต์ฒด) |
์ฌ์ดํธ ๋ฃจํธ | /var/www/krules |
Nginx ์ค์ ํ์ผ | /etc/nginx/conf.d/krules.conf |
์ ์ ํฌํธ | 80 (HTTP) |
ํธ๋ฌ๋ธ์ํ
์ฆ์ | ์์ธ | ํด๊ฒฐ |
curl: (6) Could not resolve host | DNS ์ ํ ๋ฏธ์๋ฃ | ์ ์ ํ ์ฌ์๋, nslookup์ผ๋ก ํ์ธ |
502 Bad Gateway | Nginx ์ค์ ์ค๋ฅ | nginx -t ๋ฐ error.log ํ์ธ |
403 Forbidden | ํ์ผ ๊ถํ ๋ฌธ์ | chmod -R 755 /var/www/krules |
404 Not Found | root ๊ฒฝ๋ก ์คํ | ์ค์ ํ์ผ root ๊ฐ ํ์ธ |
๋ธ๋ผ์ฐ์ ์ ์ด์ ์ฌ์ดํธ ํ์ | DNS ์บ์ | ๋ธ๋ผ์ฐ์ ์บ์ ์ญ์ ๋๋ ipconfig /flushdns |
์ฒดํฌ๋ฆฌ์คํธ
DNS A ๋ ์ฝ๋์ @ (๋ฃจํธ) ์ถ๊ฐ ์๋ฃ?
DNS A ๋ ์ฝ๋์ www ์ถ๊ฐ ์๋ฃ?
nslookup ๊ตญ๋ฃฐ.com ๊ฒฐ๊ณผ๊ฐ ๋ด ์๋ฒ IP?
/var/www/krules/index.html ํ์ผ ์กด์ฌ?
Nginx ์ค์ ํ์ผ ์์ฑ ์๋ฃ?
โข
conf.d ๋ฐฉ์: /etc/nginx/conf.d/krules.conf
โข
sites-available ๋ฐฉ์: /etc/nginx/sites-available/krules + ln -s ๋ก sites-enabled ๋งํฌ ์์ฑ
server_name ์ ๊ตญ๋ฃฐ.com www.๊ตญ๋ฃฐ.com ๋ชจ๋ ํฌํจ?
nginx -t ํต๊ณผ?
systemctl reload nginx ์๋ฃ?
๋ฐฉํ๋ฒฝ ํฌํธ 80 ์ด๋ฆผ?
๋ธ๋ผ์ฐ์ ์์ http://๊ตญ๋ฃฐ.com ์ ์ ํ์ธ?
ํต์ฌ ์ ๋ฆฌ
DNS A ๋ ์ฝ๋ = ๋๋ฉ์ธ โ IP ๋งคํ. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ฅผ ์ฐพ๋ ์ง๋
์นดํ24 ๊ตฌ์
๋๋ฉ์ธ = ์นดํ24 DNS ๊ด๋ฆฌ ํ์ด์ง์์ ๋ฐ๋ก A ๋ ์ฝ๋ ์ถ๊ฐ
์ธ๋ถ ๊ตฌ์
๋๋ฉ์ธ = ๋ค์์๋ฒ๋ฅผ ์นดํ24๋ก ๋ฐ๊พธ๊ฑฐ๋ ์ธ๋ถ ์
์ฒด DNS์์ ์ง์ A ๋ ์ฝ๋ ์ถ๊ฐ
DNS ์ ํ = ๋ณ๊ฒฝ ํ ์ต๋ 24~48์๊ฐ ์์. nslookup์ผ๋ก ํ์ธ
Nginx ์ค์ = server_name์ ๋๋ฉ์ธ ์ง์ , root์ ํ์ผ ๊ฒฝ๋ก ์ง์
๋ค์ ๋จ๊ณ = HTTP ์ฐ๊ฒฐ ์ฑ๊ณต ํ์ธ ํ โ Let's Encrypt๋ก HTTPS ์ธ์ฆ์ ์ค์น



