Proxy
π νλ‘μ μλ² (Proxy Server) κ΅¬μΆ κ°μ΄λ π
1οΈβ£ νλ‘μ μλ²λ?
νλ‘μ μλ²(Proxy Server) λ ν΄λΌμ΄μΈνΈμ μΈν°λ· μ¬μ΄μμ μ€κ³ μν μ νλ μλ²μ
λλ€.
ν΄λΌμ΄μΈνΈκ° μΈν°λ·μ μ§μ μ°κ²°λμ§ μκ³ νλ‘μλ₯Ό ν΅ν΄ μμ²μ 보λ΄λ―λ‘ λ³΄μ, μ±λ₯, μ κ·Ό μ μ΄ λ±μ μ΄μ μ μ 곡ν©λλ€.
β νλ‘μ μλ²μ μ£Όμ κΈ°λ₯
- μ΅λͺ μ± μ 곡 β ν΄λΌμ΄μΈνΈμ IP μ£Όμλ₯Ό μ¨κΉ
- μΊμ±(Cache) κΈ°λ₯ β μμ£Ό μμ²λλ λ°μ΄ν°λ₯Ό μ μ₯νμ¬ λΉ λ₯΄κ² μ 곡
- 보μ κ°ν β μ μ± μΉμ¬μ΄νΈ μ κ·Ό μ°¨λ¨ λ° νΈλν½ νν°λ§
- μ½ν μΈ νν°λ§ β νΉμ μΉμ¬μ΄νΈ λ° μλΉμ€ μ κ·Ό μ ν κ°λ₯
- λΆν λΆμ° β μ¬λ¬ μλ²λ‘ νΈλν½μ λΆμ°νμ¬ μ±λ₯ μ΅μ ν
2οΈβ£ νλ‘μ μλ²μ μ’ λ₯
μ ν | μ€λͺ |
---|---|
μ λ°©ν₯ νλ‘μ (Forward Proxy) | ν΄λΌμ΄μΈνΈκ° μΈν°λ·μ μ μν λ μ€κ°νλ νλ‘μ |
μλ°©ν₯ νλ‘μ (Reverse Proxy) | μΈν°λ·μμ λ€μ΄μ€λ μμ²μ λ°±μλ μλ²λ‘ μ λ¬ |
ν¬λͺ νλ‘μ (Transparent Proxy) | ν΄λΌμ΄μΈνΈκ° μΈμνμ§ λͺ»νλ νλ‘μ |
μΊμ± νλ‘μ (Caching Proxy) | μμ²λ λ°μ΄ν°λ₯Ό μ μ₯νμ¬ λΉ λ₯΄κ² μ 곡 |
μΉ νν°λ§ νλ‘μ | νΉμ μ¬μ΄νΈ μ°¨λ¨, μ½ν μΈ νν°λ§ μν |
3οΈβ£ νλ‘μ μλ² κ΅¬μΆ (Nginx)
Nginxλ₯Ό μ¬μ©νμ¬ μλ°©ν₯ νλ‘μ(Reverse Proxy) μλ²λ₯Ό ꡬμΆν΄λ³΄κ² μ΅λλ€.
πΉ 1. Nginx μ€μΉ
Ubuntu/Debian κΈ°λ°:
sudo apt update
sudo apt install nginx -y
CentOS/RHEL κΈ°λ°:
sudo yum install epel-release -y
sudo yum install nginx -y
μ€μΉ ν μλΉμ€ μμ:
sudo systemctl start nginx
sudo systemctl enable nginx
4οΈβ£ νλ‘μ μλ² μ€μ
πΉ 1. Nginx νλ‘μ μ€μ νμΌ μμ±
sudo nano /etc/nginx/sites-available/proxy.conf
π /etc/nginx/sites-available/proxy.conf
μμ
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://backend-server-ip: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;
}
}
πΉ 2. μ€μ μ μ© λ° Nginx μ¬μμ
μ€μ νμΌμ sites-enabled
λλ ν°λ¦¬μ μ¬λ³Όλ¦ λ§ν¬ μΆκ°
sudo ln -s /etc/nginx/sites-available/proxy.conf /etc/nginx/sites-enabled/
μ€μ ν μ€νΈ ν μ μ©
sudo nginx -t
sudo systemctl restart nginx
5οΈβ£ ν΄λΌμ΄μΈνΈμμ νλ‘μ μλ² μ¬μ©νκΈ°
ν΄λΌμ΄μΈνΈμμ νλ‘μ μλ²λ₯Ό μ¬μ©νλ €λ©΄ λΈλΌμ°μ λλ ν°λ―Έλμμ μ€μ ν΄μΌ ν©λλ€.
πΉ 1. Linux CLIμμ νλ‘μ μ¬μ©
export http_proxy="http://proxy.example.com:80"
export https_proxy="http://proxy.example.com:80"
πΉ 2. Windowsμμ νλ‘μ μ€μ
- μ μ΄ν β λ€νΈμν¬ λ° μΈν°λ· β μΈν°λ· μ΅μ β μ°κ²° β LAN μ€μ
- νλ‘μ μλ² μ¬μ© μ²΄ν¬ ν
proxy.example.com
λ° ν¬νΈ μ λ ₯
6οΈβ£ λ°©νλ²½ μ€μ (νμν κ²½μ°)
Ubuntu/Debian (UFW μ¬μ©):
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
CentOS/RHEL (firewalld μ¬μ©):
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
7οΈβ£ νλ‘μ μλ² λ‘κ·Έ νμΈ λ° λ¬Έμ ν΄κ²°
πΉ 1. λ‘κ·Έ νμΌ νμΈ
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
πΉ 2. Nginx μν νμΈ
sudo systemctl status nginx
πΉ 3. ν¬νΈ μ¬μ© μ¬λΆ νμΈ
netstat -tulnp | grep 80
8οΈβ£ νλ‘μ μλ² λ°°ν¬ (Docker μ¬μ©)
νλ‘μ μλ²λ₯Ό 컨ν μ΄λννλ €λ©΄ Nginx Docker μ΄λ―Έμ§λ₯Ό μ¬μ©ν μ μμ΅λλ€.
πΉ 1. Docker 컨ν μ΄λ μ€ν
docker run -d --name nginx-proxy -p 80:80 -v /path/to/proxy.conf:/etc/nginx/nginx.conf:ro nginx
πΉ 2. Docker Compose νμΌ μμ
π docker-compose.yml
version: "3"
services:
proxy:
image: nginx
ports:
- "80:80"
volumes:
- ./proxy.conf:/etc/nginx/nginx.conf:ro
restart: always
컨ν μ΄λ μ€ν:
docker-compose up -d
9οΈβ£ κ²°λ‘ π
β
νλ‘μ μλ²λ 보μ, μλ ν₯μ, λΆν λΆμ° λ± λ€μν μ©λλ‘ νμ© κ°λ₯
β
Nginxλ₯Ό μ¬μ©νμ¬ κ°λ¨ν μλ°©ν₯ νλ‘μ μλ² κ΅¬μΆ κ°λ₯
β
νμμ λ°λΌ λ°©νλ²½ μ€μ , λ‘κ·Έ λΆμ λ° Docker λ°°ν¬ κ°λ₯
π μΆκ° μλ£
1οΈβ£ Nginx Reverse Proxy 곡μ λ¬Έμ
2οΈβ£ νλ‘μ μλ² κ°λ
κ³Ό μ’
λ₯
3οΈβ£ Docker + Nginx νλ‘μ μ€μ