F5 사례연구/NGINX 사용자 인터뷰

여러 웹서버들 중 NGINX 를 사용하는 이유는 무엇일까요 ?

secuwave-story 2024. 7. 18. 13:41


높은 성능 적은 메모리 /리버스 프록시 방식 / 로드밸런싱 / SSL / 데이터 압축 / 비동기 처리 지원! 

 

 

높은 성능과 적은 메모리 사용

Nginx는 비동기 I/O 처리 방식을 사용하여 높은 성능을 제공합니다. 

대규모 웹사이트에서도 빠른 응답시간을 보장할 수 있습니다.

또한 Nginx는 적은 메모리 사용량으로 높은 성능을 제공하며 서버 운용 비용을 절감 할 수 있습니다.

 

 

리버스 프록시 사용기능

 잠깐 프록시에 대한 설명이 있겠습니다.

더보기

프록시의 사전적 정의는 "대리"입니다.

인터넷 접속을 할 때 보안상의 문제로 직접 통신을 주고 받을 수 없을 때 그 사이의 중계기로서 

대리로 통신을 수행하는 기능을 프록시라고 합니다. 이렇게 중계를 기능하는 것을 프록시 서버라고 부릅니다. 

프록시는 크게 포워드 프록시 /리버스 프록시로 구분됩니다,

포워드 프록시는 클라이언트와 인터넷 그 사이에 있는 영역을 말합니다.

클라이언트가 어떠한 정보를 요청하면 , 포원드 프록시가 이를 대신 받아서 서버에게 전달합니다. 

이후 서버의 응답 또한 포워드 프록시가 대신 받아 클라이언트에게 전달합니다. 

포워드 프록시를 사용하면 클라이언트의 IP 주소가 웹 서버에 노출되지 않습니다. 

따라서 클라이언트의 위치나 신원을 식별하는 것이 어려워져 보안이 강화됩니다.

또한 접근제어를 수행할 수 있습니다.

포워드 프록시를 사용하여 특정 IP 주소, 도메인 또는 URL에 대한 접근을 제한 할 수 있습니다.

마지막으로 미디어 스트리밍을 지원할 수 있습니다.

미디어 파일은 일반적으로 대용량이기 때문에 웹서버에서 직접 전송하는 것은 효율적이지 않습니다.

포워드 프록시를 사용하여 미디어 파일을 캐시하고 클라이언트에게 빠르게 제공할 수 있습니다. 

 

 

리버스 프록시는 인터넷과 백엔드 그 사이에 있는 서버 영역을 말합니다.

리버스 프록시는 하나 이상의 웹 서버 앞에 위치하여 클라이언트의 요청을 가로채는 서버입니다.

프록시가 클라이언트 앞에 위치하는 포워드 프록시와 다릅니다.

역방향 프록시를 사용하면 클라이언트가 원본 서버에 요청을 보낼 때

역방향 프록시 서버가 네트워크 엣지에서 해당 요청을 가로챕니다. 

그런 다음 역방향 프록시 서버가 원본서버에 요청을 보내고 응답을 받습니다.

역방향 프록시는 원본 서버 앞에 위치하여 어떤 클라이언트도 원본 서버와 직접 통신하지 못하도록 합니다.

 

 

https://www.cloudflare.com/ko-kr/learning/cdn/glossary/reverse-proxy/

 

일반적으로 D의 모든 요청은 F로 직접 이동하고, F는 D에게로 직접 응답을 보냅니다. 

역방향 프록시를 사용하면 D의 모든 요청이 E로 직접 이동하고,

E는 요청을 F에게로 보내며 F로부터 응답을 받습니다.

E는 그런 다음 적절한 응답을 D에게 전달합니다.

 

역방향 프록시, Nginx 의 이점을 간략하게 설명합니다.

 

 

부하 분산 (로드밸런싱) 

출처 : https://m.post.naver.com/viewer/postView.naver?volumeNo=27046347&memberNo=2521903

 

 매일 수백만 명의 사용자를 확보하는 인기 있는 웹사이트에서는 단일 원본 서버로 들어오는 모든 사이트 트래픽을 처리하지 못할 수 있습니다. 대신 사이트에서는 동일한 사이트에 대한 요청을 모두 처리하는 서로 다른 서버 풀에 분산 될 수 있습니다.

이 경우 역방향 프록시는 단일 서버에 과부하가 걸리는 것을 방지하기 위해 들어오는 트래픽을 여러 서버에 고르게 분산하는 부하 분산 솔루션을 제공 할 수 있습니다. 서버가 완전히 실패하는 경우 다른 서버가 트래픽을 처리하기 위해 나설 수 있습니다.

 

 

 공격으로부터의 보호

 역방향 프록시를 사용하면 웹사이트 또는 서비스에서 원본 서버의 IP주소를 공개할 필요가 없습니다. 

이로 인해 공격자가 DDOS 공격과 같은 표적 공격을 활용하기가 훨씬 더 어려워집니다. 

 

 

전역 서버 부하 분산 (GSLB) 

이 부하 분산 형식에서는 웹 사이트는 여러 서버에 분산 될 수 있으며 ,역방향 프록시는 클라이언트를 지리적으로 가장 가까운 서버로 보냅니다. 그러면 요청과 응답이 이동해야 하는 거리가 줄어들어 로드 시간이 최소화 됩니다.

  

 

 캐싱 

 

역방향 프록시도 콘텐츠를 캐시 할 수 있으므로 성능이 향상됩니다. 예를 들어, 파리에 있는 사용자가 로스엔젤레스에 있는 웹서버가 있는 역방향 프록시 웹사이트를 방문하는 경우, 사용자는 실제로 파이레 있는 로컬 역방향 프록시 서버에 연결할 수 있습니다. 그러면 이 서버는 LA에 있는 원본 서버와 통신해야 합니다. 프록시 서버는 그런 다음 응답 데이터를 캐시(또는 임시저장)할 수 잇습니다. 

파리의 후속 사용자는 파리의 역 프록시 서버에서 로컬로 캐시된 버전을 가져오므로 성능이 훨씬 빨라집니다.

즉 클라이언트가 이후 동일한 요청을 하였을 때, 캐시 서버에서 가져와 클라이언트에게 전달해 주므로 사이트의 접속 속도를 빠르게 합니다. 

 

 

SSL(Secure Sockets Layer) 암호화  

SSL 은 웹사이트와 사용자 간의 통신을 암호화 하고 보안을 유지하는 데 사용되는 프로토콜 입니다. 

SSL 프로토콜의 사용하여 웹서버와 클라이언트 간 보안 연결을 설정하고 SSL 인증서를 하용하여 서버의 신원을 인증합니다.

이를 통해 중간자 공격과 같은 보안 위협을 방지하고, 사용자의 개인 정보와 웹사이트의 기밀 정보를 보호할 수 있습니다. 

HTTPS는 HTTP 프로토콜의 암호화 버전입니다. 

Nginx 는 HTTPS 인증서를 제공해 줄 수 있습니다. 

 

 

데이터 압축과 비동기처리

클라이언트가 보내는 요청이 Text 일 경우 gzip 을 사용하여 해당 데이터를 압축시킬 수 있습니다.

또한 Nginx는 이벤트 루프 방식을 사용하여 높은 성능을 제공합니다. 

여러요청이 동시에 들어 왔을 때도 동시에 많은 트래픽을 처리할 수 있습니다.