네트워크 / 보안
리버스 프록시(Reverse Proxy)
리버스 프록시는 클라이언트의 요청을 받아 뒤쪽의 앱 서버로 전달하고 응답을 돌려주는 서버입니다.
쉬운 설명
VPS에서 앱은 실행되는데 도메인으로 어떻게 연결할지 고민할 때 리버스 프록시를 만날 수 있어요. 사용자가 접속하는 주소에서 요청을 받은 뒤 실제 앱이 실행 중인 주소로 전달하는 역할이에요. 도메인이나 경로에 따라 여러 앱으로 요청을 나눌 수도 있어요. Nginx와 Caddy 같은 프로그램으로 구성할 수 있어요.
이런 상황에서 만나요
스터디 앱은 서버 안의 3000번 포트에서 실행 중이고, 사용자에게는 study.example.com이라는 주소를 알려 주고 싶다고 해 볼게요. 리버스 프록시가 외부 요청을 받고 앱으로 전달하도록 구성할 수 있어요.
사용자 주소와 실제 앱 주소를 구분해요
https://study.example.com
http://127.0.0.1:3000
앱 서버 → 리버스 프록시 → 브라우저
- 1사용자는 이 주소로 요청을 보내요.
- 2같은 실행 환경 안의 앱으로 전달하는 예시예요.
- 3앱이 처리한 결과도 프록시를 통해 돌아와요.
사용자가 여는 주소와 프록시가 접속하는 앱 주소를 구분해요. 아래 127.0.0.1은 프록시가 실행되는 환경 자신을 뜻해요. 앱이 다른 컴퓨터나 컨테이너에 있다면 그 환경에서 도달할 수 있는 주소를 사용해야 해요.
헷갈리기 쉬운 점
DNS에 주소를 연결하면 리버스 프록시 설정도 끝나나요?
아니에요. DNS는 도메인으로 접속할 곳을 찾게 하고, 리버스 프록시는 들어온 요청을 어떤 앱에 전달할지 정해요. 도메인이 서버를 가리켜도 전달 대상이나 앱 실행 상태가 잘못되면 사이트가 열리지 않을 수 있어요.
502 같은 오류가 나오면 프록시가 앱에 연결할 수 있는지, 앱 주소와 포트가 맞는지, 앱 로그에 오류가 있는지 확인해요. 상태 코드 하나만으로 원인을 확정하지 않아요.
왜 알아야 할까요?
도메인 연결 문제와 앱 실행 문제 사이에서 어디를 확인할지 나눌 수 있어요. AI에게도 외부 주소와 실제 앱 주소, 프록시 오류를 구분해서 설명할 수 있어요.
조금 더 자세히
리버스 프록시는 서버 쪽에서 요청을 받는 역할입니다. 클라이언트의 외부 접속을 대신하는 포워드 프록시와 요청을 대신 받는 위치가 다릅니다. HTTPS 처리나 부하 분산을 맡길 수도 있지만 설정과 제품에 따라 기능이 달라집니다.
프록시와 앱 사이의 통신 방식은 별도로 정합니다. 사용자 쪽에서 HTTPS로 연결했다고 내부 전달 구간까지 같은 방식으로 암호화되는 것은 아닙니다. 앱이 원래 요청의 주소와 프로토콜을 알아야 한다면 전달 헤더 설정도 확인합니다.
직접 사용할 때 확인해 보세요
- 외부 주소와 내부 앱 주소를 구분한다
- 프록시 환경에서 앱에 접속할 수 있는지 확인한다
- 오류가 난 구간의 로그를 확인한다