[네트워크] 라우팅과 프록시 (NGINX)정보2024. 12. 14. 02:57
Table of Contents
728x90
Nginx를 이용한 라우팅과 프록시의 차이
Nginx는 웹 서버이자 리버스 프록시, 로드 밸런서로 널리 사용되는 도구로, 웹 애플리케이션의 성능과 보안을 강화하는 데 중요한 역할을 함.
Nginx의 주요 기능 중 라우팅과 프록시의 차이를 명확히 이해하는 것은 효율적인 서버 설정에 필수적임.
1. 라우팅(Routing)과 프록시(Proxy) 개념
라우팅
- 정의: 클라이언트의 요청을 처리하기 위해 특정 URL 경로를 설정하고, 요청을 적합한 처리기로 전달하는 작업.
- 주요 목적:
- URL 경로에 따라 정적 파일, 특정 애플리케이션, 또는 다른 서버에 요청 전달.
- 요청 경로 기반으로 다중 서비스 분기.
- 특징:
- 라우팅은 프록시를 포함하는 개념임. 즉, 요청을 특정 서버로 전달하는 작업은 프록시의 역할을 수행함.
- 하지만 모든 프록시가 반드시 라우팅에 속하지는 않음. 예를 들어, 리버스 프록시의 경우 단순히 요청을 백엔드 서버로 전달하면서 클라이언트와 백엔드 간의 통신을 중개하는 데 초점을 둠.
- 사용 사례:
/static/
요청을 정적 파일 디렉토리로 매핑./api/
요청을 백엔드 서버로 전달.
server {
listen 80;
location /static/ {
root /var/www/html;
}
location /api/ {
proxy_pass http://localhost:5000;
}
}
프록시
- 정의: 클라이언트 요청을 대신 처리해주는 중간 서버 역할. 특히 Nginx에서 주로 사용하는 것은 리버스 프록시(reverse proxy).
- 주요 목적:
- 백엔드 서버 보호 및 부하 분산.
- 클라이언트와 서버 사이의 네트워크 흐름을 관리.
- SSL 종료 및 캐싱 지원.
- 특징:
- 프록시는 클라이언트의 요청을 백엔드 서버로 전달하며, 이 작업이 라우팅 설정을 통해 수행될 수도 있음.
- 하지만 프록시는 라우팅 없이도 별도의 보안, 캐싱, 로드 밸런싱 등 독립적인 역할을 수행할 수 있음.
- 사용 사례:
- 여러 애플리케이션 서버를 하나의 엔드포인트로 묶음.
- HTTPS 요청을 처리하여 HTTP로 변환.
server {
listen 80;
location / {
proxy_pass http://localhost:8080;
}
}
2. 라우팅과 프록시의 차이
항목 | 라우팅 | 프록시 |
---|---|---|
역할 | 요청을 적절한 처리기로 전달. | 요청을 대신 처리하여 백엔드 서버와 통신. |
주요 목적 | URL 기반 요청 분기. | 보안, 부하 분산, 통신 관리. |
작동 방식 | URL 경로를 기준으로 요청 처리기를 매핑. | 요청을 받아 백엔드 서버로 전달하고 응답 반환. |
클라이언트와의 관계 | 클라이언트가 직접 서버와 통신. | 프록시가 클라이언트와 서버 간 중개 역할. |
Nginx 설정 방식 | location 블록 사용. |
proxy_pass 설정으로 리버스 프록시 설정. |
포함 관계 | 라우팅은 프록시를 포함하는 개념. | 프록시는 독립적으로 보안과 부하 분산 역할 가능. |
3. Nginx 설정 예제
라우팅 예제
server {
listen 80;
location /app1/ {
proxy_pass http://app1.example.com;
}
location /app2/ {
proxy_pass http://app2.example.com;
}
}
프록시 예제
server {
listen 80;
location / {
proxy_pass http://backend.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4. 활용 방안 및 결론
- 라우팅은 애플리케이션 경로를 분리하고, 서비스 경로 관리를 명확히 함.
- 프록시는 보안 강화, 로드 밸런싱, 캐싱 등을 통해 서버 성능을 최적화.
- 포함 관계:
- 라우팅은 요청 전달 방식을 정의하는 큰 개념으로, 프록시 설정을 포함할 수 있음.
- 그러나 프록시는 단순히 요청 전달 이상의 역할(보안, 캐싱 등)을 수행하기도 하며, 반드시 라우팅과 연결되지 않을 수도 있음.
- 두 기능을 함께 사용하면 복잡한 서비스 환경에서 효율적인 트래픽 처리가 가능함.
'정보' 카테고리의 다른 글
[Kubernetes] Kubernetes의 역할과 사용자 역할 비교 (0) | 2024.12.14 |
---|---|
[Kubernetes] Kubernetes는 무엇이고, 무엇이 아닌가? (0) | 2024.12.14 |
[Docker] tty, stdin_open (0) | 2024.12.11 |
[Python] ImportError: cannot import name 'mock_s3' from 'moto' (1) | 2024.12.09 |
[Atlassian API] Jira Board 등록 - API (2) | 2024.12.08 |
@maneDataLab :: 마네의 데이터랩
배움에 즐거움을 느끼는 마네의 데이터랩 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!