리버스 프록시(Reverse Proxy)
이번에 진행했던 프로젝트에서 리버스 프록시라는 개념을 처음 접하고, 서버에도 적용해보았다.
프록시란 무엇이고, 어떤 역할을 하는지 정리하고 넘어가고자 한다.
프록시(Proxy)
- 프록시(Proxy)란 '대리', '대신'이라는 뜻을 가지며, 프로토콜에 있어서는 대리 응답 등에서 사용하는 개념이다.
- 클라이언트와 서버 사이에 존재하며, 중계기로서 대리로 통신을 수행하는 것을 Proxy라고 하며, 그 중계 기능을 하는 주체를 Proxy Server라고 한다.
- Proxy Server를 통해 요청에 대한 캐시를 저장하고, 중복 요청 시 동일한 응답을 보내어 클라이언트에게는 빠른 속도의 서비스를, 서버에게는 불필요한 부하를 줄이는 효과를 낼 수 있다.
프록시 서버가 어느 쪽을 바라보고 있느냐에 따라서 포워드 프록시, 리버스 프록시로 분류된다.
포워드 프록시(Forward Proxy)
보통 말하는 프록시가 포워드 프록시이다.
Client와 Server 사이에 위치하여 요청을 중계하며, 요청과 응답은 Proxy Server를 거친다.
클라이언트 보안
일종의 방화벽의 개념으로 제한을 위해 포워드 프록시를 사용한다.
정부, 학교, 기업 등 기관에 속한 사람들의 제한적인 인터넷 사용을 위하여, 포워드 프록시 서버에 룰을 추가하여 접속하고자 하는 사이트를 확인하고, 룰에 벗어난 사이트라면 접속하는 것을 막을 수 있다.
암호화
클라이언트의 요청 시, 프록시 서버를 통과하며 서버로 전달될 때 프록시 서버의 IP만 노출된다.
사이트에서 IP를 검사해 특정 국가의 접속을 차단하는 경우가 있는데, 프록시 서버를 사용하여 접속하면 다른 나라에서 접속한 것 처럼 우회할 수 있다.
여러 프록시 서버를 경유하는 기술을 Proxy Chaining이라 하며, 여러 국가에 접속하여 우회하는 식으로 클라이언트의 IP를 숨기는데 사용한다.
리버스 프록시(Reverse Proxy)
리버스 프록시는 웹서버/WAS 앞에 놓여있다.
클라이언트가 요청 시, 웹서버에 요청하는 것이 아니라, 프록시로 요청을 하게 되고 프록시 서버가 서버에서 데이터를 받아온다. 포워드 프록시와 반대로, 리버스 프록시는 서버의 정보를 감출 수 있다.
기업의 네트워크 환경에는 DMZ라는 내부/외부 네트워크 사이에 위치하는 구간 (내/외부에서 둘다 접근할 수 있는 공간)이 존재한다. 해킹공격 보완을 위해서, 해당 위치에 리버스 프록시 서버를 두고, 실제 서비스 서버는 내부망에 위치시킨 후 서비스 하는 것이 일반적이라고 한다.
로드 밸런싱
Nginx는 클라이언트의 요청을 프록시 서버에 분산하기 위해 로드 밸런싱을 수행하여 성능, 확장성 및 신뢰성을 향상시킬 수 있다.
서버 보안
리버스 프록시를 사용하면 서버 측 보안에 좋다.
리버스 프록시를 사용하면 본래 서버의 IP 주소를 노출시키지 않을 수 있다. 따라서 해커들의 DDoS 공격과 같은 공격을 막는데 유용하다.
SSL 암호화
본래 서버가 클라이언트들과 통신을 할때 SSL(or TSL)로 암호화, 복호화를 할 경우 비용이 많이 들게 된다.
그러나 리버스 프록시를 사용하면 들어오는 요청을 모두 복호화하고 나가는 응답을 암호화해주므로 클라이언트와 안전한 통신을 할수 있으며 본래 서버의 부담을 줄여줄 수 있다.
Reverse Proxy 적용 후기
여러 장점 중에서 비품인 프로젝트에 리버스 프록시를 적용했던 이유는 SSL 암호화와 무중단 배포를 구현하기 위해서였다. 결과적으로 보안이나 성능을 끌어올릴 수 있었지만, 제대로 이해하지 못한 상태로 Nginx를 사용하였기에 SSE 를 적용하는 과정에서 많은 문제가 발생했다.
항해 99 - 2023.03.28 TIL
거의 3주만에 TIL을 쓰는 것 같다. 그동안 클론코딩 프로젝트를 마무리하고, 현재는 최종 프로젝트를 진행 중이다. 어쩌다 보니 B2B SaaS 공모전에 참가하게 되어, 사내에서 사용할 만한 기능을 주
9401ndk.tistory.com
항해 99 - 2023.04.24 TIL
주특기 학습 주차가 끝나고 나서부터는 TIL에 소홀했던 것 같다. 21일에 최종 프로젝트를 무사히 마치고 발표까지 진행했다. 우리 팀은 B2B SaaS로 프로젝트를 기획해보았다. 사내 비품들을 엑셀로
9401ndk.tistory.com
Nginx 의 기본 설정 값을 이해하지 못하여 발생한 문제였고, 현재는 전부 해결된 상태이다.
무중단 배포는 여러 차례 시도했지만, Docker에서 이미지를 빌드할 때 Nginx 설정 폴더가 옮겨지지 않는 문제가 지속적으로 발생했다. Nginx 설정이 옮겨지지 않아서 2개로 세팅해둔 Spring boot 서버가 Swiching 되지 않았고, CodeDepoly에서도 배포 중 에러가 발생했다. 아직 원인을 발견하지 못해서 무중단 배포는 구현하지 못했다.
자료 출처
프록시(Proxy)란?
프록시(Proxy)란? 프록시(Proxy)는 "대리"의 의미로, 인터넷과 관련해서 쓰이는 경우, 특히 내부 네트워크에서 인터넷 접속을 할 때에, 빠른 액세스나 안전한 통신등을 확보하기 위한 중계서버를 "프
engineer-mole.tistory.com
[Nginx] 리버스 프록시(Reverse Proxy) 개념 및 사용법
1. 개요 리버스 프록시란? 클라이언트 요청을 대신 받아 내부 서버로 전달해주는 것을 리버스 프록시(Reverse Proxy) 라고 합니다. 저도 사실 프록시라는 개념이 낯설었는데요, 일단 프록시라는 개념
narup.tistory.com
🌐 Reverse Proxy / Forward Proxy 정의 & 차이 정리
프록시(Proxy) 란? 프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 컴퓨터 시스템이나 응용 프로그램을 가리킨다. 프록시(Proxy)란 '대리'
inpa.tistory.com