포워드 프록시(Forward Proxy), 리버스 프록시 (Reverse Proxy)

gunny·2025년 3월 13일

[CS] OS, Network

목록 보기
8/10

리버스 프록시(Reverse Proxy)

  • 클라이언트(사용자)와 백엔드 서버 사이에서 요청을 중계하는 서버
  • 즉, 클라이언트는 백엔드 서버를 직접 호출하지 않고, 리버스 프록시를 통해서만 백엔드 서버와 통신할 수 있음.

즉, 사용자가 직접 백엔드 서버와 소통하지 않고, 중간에 Nginx 같은 서버가 요청을 대신 받아서 백엔드 서버로 전달한 뒤, 응답을 다시 사용자에게 보내주는 역할이다.

1. 리버스 프록시의 동작 방식

일반적인 클라이언트-서버 모델은

클라이언트(브라우저) -> 백엔드 서버 -> 응답 반환
  • 사용자가 직접 백엔드 서버(http://backend.com)에 요청을 보낸다.

리버스 프록시를 사용하는 경우

클라이언트(브라우저) -> 리버스 프록시(Nginx) -> 백엔드 서버 -> 리버스 프록시 -> 응답 반환
  • 사용자는 Nginx와 같은 리버스 프록시에 요청을 보내고, Nginx는 요청을 적절한 백엔드 서버로 전달하고, 응답을 받아 다시 클라이언트에게 반환한다.
  • 클라이언트는 백엔드 서버 IP를 알 필요없이 Nginx만 알면 된다.

2. 리버스 프록시가 필요한 이유

리버스 프록시는 단순한 요청 중계 역할 뿐 아니라 아래와 같은 장점을 제공한다.

[1] 보안 강화

  • 클라이언트가 직접 백엔드 서버의 IP를 알 수 없도록 보호
  • DDos 공격 같은 직접적인 공격 차단

[2] 로드 밸런싱 (부하 분산)

  • Nginx가 요청을 여러 개의 백엔드 서버로 분산하여 서버의 과부하를 줄임
  • 트래픽이 많을 때도 서버 다운을 방지

[3] 속도 최적화

  • Nginx가 정적 파일 (HTML, CSS, JS, 이미지)을 캐시해서 빠르게 제공함
  • 불필요한 백엔드 요청을 줄여 서버 응답 속도를 높일 수 있음

[4] 서버 유지보수 및 확장 용이

  • 백엔드 서버가 여러 개일 경우, 하나의 백엔드 서버를 내려도 리버스 프록시가 자동으로 다른 서버로 요청을 보낼 수 있음
  • 새로운 서버를 추가할 때, 클라이언트의 설정을 변경할 필요 없이 리버스 프록시 설정만 바꾸면 됨

3. Reverse Proxy(리버스 프록시)와 Forward Proxy(포워드 프록시) 비교

  • 리버스 프록시는 사용자가 웹 사이트를 쵸어하면, 그 요청을 대신 받아 서버로 보내고 응답을 전달하는 중간 서버이다.
  • 포워드 프록시는 예를 들면 회사 내부 직원이 외부 웹사이트에 접속할 때, 대신 요청을 보내주는 중간 서버(VPN)과 유사하다.

4. 리버스 프록시 예제

클라이언트가 http://example.com 으로 요청하면,
백엔드 서버(8000번 포트)로 요청을 전달하는 예제를 살펴보자.

sever {
	listen 80;
    
    location / {
    	proxy_pass http://backend_server:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

(1) 사용자가 http://example.com으로 요청을 보내면
(2) Ngnix가 해당 요청을 받아서 백엔드 서버(backend_server:8000)로 전달.
3. 백엔드 서버에서 응답을 반환하면, 다시 클라이언트에게 응답 전달

-> 클라이언트는 백엔드 서버의 IP를 몰라도 되고, 항상 Nginx(리버스 프록시)만 호출하면 된다.

5. 리버스 프록시 사용

  • 백엔드 서버를 직접 노출하지 않고 보호
  • 하나의 도메인에서 여러 개의 백엔드 서버 운영시
  • 트래픽을 여러 서버로 분산해서 부하를 줄이고 싶을 때
  • 정적 파일을 캐싱해서 성능을 향상시키고 싶을 때
  • DDos 공격을 방어하고 보안을 강화하고 싶을 때

즉, 리버스 프록시는 보안, 속도, 부하 분산, 유지보수 등 여러 가지 장점이 있어서 서버 운영에 필수적으로 사용된다.

출처

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글