
이번 글에서는 "Nginx 웹 서버의 역할"이 메인인데, 우선 Web Server와 WAS에 대해서 먼저 짚고 넘어갈려고 해요. (이유는 글을 읽다보면 "아 ~ 이래서?" 할거라구요. 그러니까 그냥 봐.)
Web Server와 WAS의 차이점은 요청받아 처리하는 콘텐츠의 차이인데, Web Server는 정적 콘텐츠, WAS는 동적 콘텐츠를 처리한다.
정적 콘텐츠와 동적 콘텐츠를 쉽게 설명하자면 ...
Nginx는 Apache와 같이 웹 서버로 클라이언트 요청에 맞는 정적 파일을 응답해주는 Web Server로 사용되기도 하고, 동적인 리소스를 처리하기 위해 WAS로 요청을 전달해 주기도 한다. 이제 위에서 Web Server와 WAS에 대해 설명한 이유를 알겠죠 ?
대표적으로 Nginx가 하는 역할은 ...
1. 정적 파일을 처리하는 HTTP 서버로서의 역할
HTML, CSS, Javascript, 이미지와 같은 정보를 웹 브라우저에 전송하는 역할을 한다. (HTTP 프로토콜 준수)
2. 응용 프로그램 서버에 요청을 보내는 리버스 프록시로서의 역할
클라이언트가 가짜 서버에 요청하면, 프록시 서버가 리버스 서버로부터 데이터를 가져오는 역할을 한다.
WAS, 웹 어플리케이션 서버는 대부분 DB와 연결되어 있기 때문에 WAS가 최전방에 있으면 보안에 취약해진다. 이때 리버스 프록시를 두고 사용하면 웹 서버가 웹 어플리케이션 서버와 통신해서 결과를 클라이언트에 제공하는 방식으로 서비스를 하게 된다.
내부 네트워크에서 인터넷 접속을 할 때, 빠른 액세스나 안전한 통신을 확보하기 위한 중계 서버를 프록시 서버라고 한다. 프록시를 사용하는 이유는 보안을 강화할 수 있고, 통신 성능을 높여주기 때문이다. 프록시 유형은 프록시 서버의 위치에 따라 나뉘는데 이 글에서는 포워드 프록시와 리버스 프록시를 다루어 보려고 한다.
포워드 프록시는 클라이언트 앞에 위치해서 클라이언트가 서버에 요청을 보내면 포워드 프록시가 해당 요청을 대신 받아서 서버에 전달해주고, 서버의 응답을 대신 받아서 클라이언트에게 전달해준다.

리버스 프록시는 웹 서버들 앞에 위치해서 포워드 프록시와 마찬가지로 클라이언트의 요청을 받아 서버에 전달하고, 서버의 응답을 받아 클라이언트에게 전달한다.

그림을 보고 "어? 그럼 Nginx는 어딨어?"라며 저랑 같은 생각을 하는 분이 있다면 ...
Nginx와 Apache 같은 웹 서버 프레임워크에서 프록시 기능을 쓸 수 있다고 이해하면 될 거 같아요 >__<!
앞에서 말했듯이, 포워드 프록시는 클라이언트 앞에, 리버스 프록시는 웹 서버 앞에 놓여서 네트워크 구조상 어디에 위치하는지에 따라 유형이 나뉜다고 했다. 프록시는 어느 방향으로 데이터를 제공하는지에 따라서도 유형이 나뉠 수 있다.
포워드 프록시는 내부망에서 외부망으로 접근할 때 사용되어 클라이언트 쪽으로 데이터(response)를 밀어주고, 리버스 프록시는 외부망에서 내부망으로 접근할 때 사용되어 서버 쪽으로 데이터(response)를 밀어준다.
잘 생각해보면 포워드 프록시는 클라이언트의 대리, 리버스 프록시는 서버의 대리인 셈이다.
웹 서버와 WAS의 차이, 정적 콘텐츠와 동적 콘텐츠, 그리고 Nginx 웹 서버의 역할에 대한 설명이 매우 명확하게 잘 쓰여져 있네요. 특히 프록시 서버의 개념이랑 그 장단점, 그리고 포워드 프록시와 리버스 프록시의 차이점을 이해하는 데 큰 도움이 되었습니다. 감사합니다.