서버와 Proxy

배고픈귤·2025년 6월 23일

Backend

목록 보기
3/11

서버는 사용자의 요청에 따라 서비스나 데이터를 제공하는 컴퓨터이다.
클라이언트는 서버에 여러 요청을 보내고 서버는 이런 요청에 알맞은 응답을 반환한다.

서버는 크게 정적 리소스를 처리하는 서버(Web Server)와 동적 리소스를 처리하는 서버(WAS)로 나뉜다.

Web Server

정적인 리소스를 처리하는 서버이다.
정적인 리소스엔 html, css, 이미지 등과 같은 자원이 있다.
클라이언트의 요청이 들어오면 알맞은 정적 파일을 찾아서 응답한다.

WAS(Web Application Server)

동적인 리소스를 처리하는 서버이다.
동적인 리소스에는 JAVA, DB 조회나 로직 처리가 존재한다.
클라이언트 요청이 들어오면 백엔드의 로직을 실행하여 DB에 접근하고 결과를 반환한다.

WAS에는 Web Server의 정적 리소스를 처리하는 기능도 포함되어 있지만 비용이 비싸서 대부분 정적 리소스 처리는 Web Server를 사용한다.


실제 웹 서비스 환경에서는 두 서버를 모두 활용한다.
정적 리소스 요청

[클라이언트 브라우저]
↓ 요청 (index.html 요청)
[웹 서버 (Nginx, Apache 등)]

파일 시스템에서 index.html 검색

[웹 서버] → 정적 HTML 응답

[클라이언트 브라우저] → 화면 렌더링

여기서는 WAS를 거치지 않아서 속도가 빠르다.

동적 리소스 요청

[클라이언트 브라우저]
↓ 요청 (POST /login, 아이디/비밀번호 포함)
[웹 서버 (Nginx)]
↓ 요청을 WAS로 전달 (리버스 프록시)
[WAS (Spring, Express 등)]
↓ 요청 파싱 → 비즈니스 로직 처리
↓ DB 조회 (회원 정보 확인 등)
[DB 서버][웹 서버]
↓ 응답 전달
[클라이언트 브라우저] → 로그인 결과 확인

웹 서버는 요청만 전달하고 처리 부분은 WAS가 담당한다.

Proxy Server

proxy는 '대리'를 의미하는 단어로 proxy server은 클라이언트와 웹 서버 사이에 위치하여 대리로 통신을 받아준다. 모든 컴퓨터(클라이언트, 서버)에 고유 IP 주소가 존재하듯이 proxy 서버에도 IP주소가 존재한다. 프록시 서버의 장점은 다음과 같다.

  1. 보안 강화

이때 클라이언트의 요청에 담겨 있는 고유 IP가 프록시 서버의 IP 주소로 바뀌게 된다. 이때 실제 IP 주소를 숨김으로써 외부 공격으로부터 보호되고 프록시 서버는 방화벽 역할을 통해 외부 접근을 제어한다.

  1. 캐싱

프록시 서버는 자주 요청되는 리소스를 캐싱하여 같은 요청이 들어올 경우 서버를 거치지 않고 응답을 반환한다.

  1. 접근 제어(필터링)

프록시 서버는 측정 사이트 접근을 차단한다.

  1. 부하 분산(load balancing)

서버에 대한 대규모 요청이 들어왔을 때 proxy 서버는 각 서버마다 균등하게 요청을 분산시킨다.

Forward Proxy

Forward 프록시는 클라이언트의 요청을 받아 서버로 전달하며 이 과정에서 클라이언트의 고유 IP를 숨기고 캐싱하여 보안과 성능을 향상시킨다. 또한 차단 리스트를 관리하여 클라이언트의 요청이 차단 리스트에 존재할 시 요청을 차단하고 요청에 대한 서버의 응답을 검사하여 필터링한다.

클라이언트-forward proxy-인터넷-서버

Reverse Proxy

Reverse Proxy는 서버를 숨겨주는 프록시 서버이다. 클라이언트가 리버스 프록시로 요청을 보내면 리버스 프록시가 실제 서버에 요청을 보낸다. 이를 통해 서버의 IP를 숨겨서 보안이 강화된다. 또한 대규모 요청을 분산 시키는 로드 밸런싱을 수행하여 효율을 높인다.
로드 밸런싱이란 대규모 요청을 처리하기 위해 서버의 성능을 높이는 1. Scale-up 방법과 서버의 개수를 늘리는 2.Scale-out의 방법 중 2번에서 사용되는 기술이다.

클라이언트-인터넷-reverse proxy- 서버

참고


https://velog.io/@jmjmjmz732002/Infra-Reverse-Proxy..-%EA%B3%BC%EC%97%B0-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C%EC%9A%94

https://velog.io/@yenicall/%ED%8F%AC%EC%9B%8C%EB%93%9C%ED%94%84%EB%A1%9D%EC%8B%9C-%EB%A6%AC%EB%B2%84%EC%8A%A4%ED%94%84%EB%A1%9D%EC%8B%9C-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%A1%9C%EB%93%9C%EB%B0%B8%EB%9F%B0%EC%84%9C

0개의 댓글