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μ—μ„œ ν”„λ‘μ‹œ μ„€μ •

  1. μ œμ–΄νŒ β†’ λ„€νŠΈμ›Œν¬ 및 인터넷 β†’ 인터넷 μ˜΅μ…˜ β†’ μ—°κ²° β†’ LAN μ„€μ •
  2. ν”„λ‘μ‹œ μ„œλ²„ μ‚¬μš© 체크 ν›„ 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 ν”„λ‘μ‹œ μ„€μ •

RSS Feed
λ§ˆμ§€λ§‰ μˆ˜μ •μΌμž