프록시 패턴이란?
다양한 상황에서 객체 간 상호작용을 제어하고 향상시키는 데 활용되는 유용한 디자인 패턴
다섯 가지 주요 프록시 유형
- 원격 프록시(Remote Proxy)
- 원격에 위치한 객체에 안전하게 접근하기 위한 원격 프록시는 네트워크를 통한 객체 호출을 효율적으로 관리한다.
- 객체 간의 거리를 극복하여 분산 시스템에서의 효과적인 상호작용을 지원한다.
- 가상 프록시(Virtual Proxy)
- 비용이 많이 드는 객체의 생성과 초기화를 최적화하여 성능 향상과 자원 효율성을 촉진시킨다.
- 필요한 경우에만 객체를 생성하므로 불필요한 작업을 최소화한다.
- 보호 프록시(Protection Proxy)
- 객체에 대한 접근을 제어하여 특정 권한이 있는 사용자만이 해당 객체에 접근할 수 있다.
- 응답 속도를 개선하고 불필요한 작업을 방지하여 효율성을 높인다.
- 캐싱 프록시(Caching Proxy)
- 동일한 요청이 반복될 때 객체를 호출하는 대신 결과를 캐싱하여 성능을 향상시킨다.
- 응답 속도를 개선하고 불필요한 작업을 방지하여 효율성을 높인다.
- 스마트 프록시(Smart Proxy)
- 부가적인 기능을 제공하거나 객체 사용을 지능적으로 제어하여 코드의 가독성을 향상시키고 유지보수를 용이하게 만든다.
- 객체의 행동을 동적으로 조작하여 다양한 요구에 대응한다.
프록시 서버란?
서버와 클라이언트 사이에서 클라이언트가 자신을 통하여 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터 시스템이나 응용 프로그램
Nginx를 활용한 프록시 서버 구성
# 로드 밸런싱 설정
upstream backend_servers {
server 111.111.111.222:80;
server 222.222.222.222:80;
server 333.333.333.333:80;
}
# 캐시 디렉토리 및 설정을 정의
proxy_cache_path /my/proxy/cache levels=1:2 keys_zone=devpcmini:10m;
# 리버스 프록시 설정
server {
listen 80; # 서버가 수신 대기하는 포트 지정
server_name devpcmini.tistory.com; # 서버에 대한 도메인 지정
location / { # 모든 요청을 프록시
proxy_pass http://devpcmini.tistory.com; # 백엔드 서버의 주소 지정
# 프록시 서버에서 백엔드 서버로 전달되는 헤더를 설정
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;
# 캐싱 구성
proxy_cache devpcmini;
proxy_cache_valid 200 302 5m;
proxy_cache_valid 404 1m;
}
}
# HTTPS 사용을 위한 SSL 설정
server {
listen 443 ssl; # SSL을 사용하는 포트 설정
server_name devpcmini.tistory.com; # 서버에 대한 도메인 지정
# SSL 인증서와 개인 키의 경로를 지정
ssl_certificate /my/ssl/path/certificate.crt;
ssl_certificate_key /my/ssl/path/private.key;
location / { # 모든 요청을 프록시
proxy_pass http://devpcmini.tistory.com; # 백엔드 서버의 주소 지정
# 프록시 서버에서 백엔드 서버로 전달되는 헤더를 설정
proxy_set_header Host $real_ip;
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 $real_scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_cache my_cache; //프록시 캐시를 사용하도록 설정
# 캐시의 유효 기간 설정
proxy_cache_valid 200 302 5m;
proxy_cache_valid 404 1m;
}
}
Nginx를 통한 웹 보안 및 성능 최적화
- DDoS 공격 방어
- Nginx는 높은 연결 처리 능력과 리버스 프록시 기능을 통해 DDoS 공격에 강한 성능 제공
- Rate limiting, Connection limiting, IP blocking 등의 설정을 통해 공격 트래픽을 제어
- HTTPS 구축
- SSL/TLS 종단 간 암호화를 지원하여 안전한 통신을 제공
- SSL 인증서를 설정하고 HTTPS 연결을 통해 데이터의 기밀성과 무결성을 보호
- CORS 방어
- Nginx를 사용하여 CORS 헤더를 설정하면 웹 어플리케이션에서 다른 도메인으로의 요청에 대한 접근 통제 가능
- 필요한 경우 특정 도메인으로부터의 요청만을 허용하도록 CORS 정책을 설정 가능
- 로드 밸런싱
- 여러 백엔드 서버로 트래픽을 분산시켜 가용성을 향상시키고, 서버 부하를 고르게 분배함으로써 안정적인 서비스를 제공
'프로그래밍 > Computer Science(CS)' 카테고리의 다른 글
MVC(Model-View-Controller) 패턴 (0) | 2024.03.12 |
---|---|
반복자 패턴(iterator pattern) (0) | 2024.03.07 |
옵저버 패턴(observer pattern) (0) | 2024.02.29 |
전략 패턴(strategy pattern) (0) | 2024.02.27 |
싱글톤 패턴(Singleton pattern) (0) | 2024.02.26 |