상세 컨텐츠

본문 제목

NGINX

기술정리

by 승학이 2024. 2. 9. 16:02

본문

NGINX란?

Nginx란 트래픽이 많은 웹사이트의 서버(WAS)를 도와주는 비동기 이벤트 기반구조의 경량화 웹 서버 프로그램입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, 또는 Reverse Proxy Server로 활용하여 WAS의 부하를 줄일 수 있는 로드밸런서 역할을 하기도 합니다.

 

 

프록시(Proxy)란?

프록시의 사전적 의미는 '대리', '대신'입니다. 보안상의 문제로 직접 통신을 주고받을 수 없는 두 PC 사이에서 통신을 할 때 직접 하지 않고 중간에서 대리로 중계를 하는 개념을 '프록시'라고 합니다. 이렇게 중계 기능을 하는 것을 '프록시 서버'라고 부릅니다.

 

프록시 서버는 서버가 어디에 위치하느냐에 따라 포워드 프록시와 리버스 프록시로 나뉩니다.

 

 

포워드 프록시(Forward Proxy)

클라이언트에서 서버로 리소스를 요청할 때 직접 요청하지 않고 프록시 서버를 거쳐서 요청합니다. 이 경우 서버에서 받는 IP는 클라이언트의 IP가 아닌 프록시 서버의 IP이기 때문에 서버는 클라이언트가 누구인지 알 수 없습니다. 따라서 서버에게 클라이언트가 누구인지 감춰주는 역할을 합니다.

 

예를 들어 사용자가 google.com 에 연결하려고 하면 사용자 PC 가 직접 연결하는게 아니라 포워드 프록시 서버가 요청을 받아서  google.com 에 연결하여 그 결과를 클라이언트에 전달(forward) 해 줍니다.

 

포워드 프록시는 대개 캐싱 기능이 있으므로 자주 사용되는 컨텐츠라면 월등한 성능 향상을 가져올 수 있으며 정해진 사이트만 연결하게 설정하는 등 웹 사용 환경을 제한할수 있으므로 보안이 매우 중요한 기업 환경등에서 많이 사용합니다.

 

  • 클라이언트가 서버에게 요청할 때 직접 서버에 접근하지 않고 포워드 프록시 서버에게 요청하면 포워드 프록시 서버가 해당 서버에게 접근하여 요청을 전달하고 결과를 클라이언트에게 전달해주는 방식.
  • 포워드 프록시는 캐시 기능을 사용하기 때문에 캐시 서버로 활용하여 성능을 향상할 수 있음.
  • 자주 사용되는 자원을 캐시에 저장해놓기 때문에 해당 자원 요청이 온다면 서버에게 갈 필요 없이 프록시 서버 자체에서 처리가 가능.
  • 클라이언트가 서버를 직접 접근하지 못하기 때문에 접근 가능한 사이트를 제한할 수 있으므로 보안을 향상할 수 있음.
  • 즉, 클라이언트는 서버를 알지만, 서버는 프록시를 통해 요청이 오기 때문에 클라이언트를 알지 못함.

 

리버스 프록시(Reverse Proxy) ->프로젝트에서 적용했던 방시

리버스 프록시는 포워드 프록시와 반대 개념입니다. 애플리케이션 서버의 앞에 위치하며 클라이언트가 서버를 요청할 때 리버스 프록시를 호출하고 리버스 프록시가 서버로부터 응답을 전달받아 다시 클라이언트에게 전송하는 역할을 합니다.

이 경우, 클라이언트는 애플리케이션 서버를 직접 호출하는 것이 아니라 서버를 통해 호출하기 때문에 리버스 프록시는 애플리케이션 서버를 감추는 역할을 하게 됩니다.

 

예를 들어 리버스 프락시로 웹 서버를 설정할 경우 사용자가 example.com 웹 서비스에 데이타를 요청하면 Reverse Proxy 는 이 요청을 받아서 내부 서버(보통 WAS 입니다)에서 데이터를 받은후에 이 데이터를 사용자에게 다시 전달하게 됩니다.

 

  • 클라이언트가 서버에게 요청할 때 직접 서버에 접근하지 않고 리버스 프록시 서버가 이 요청들을 받아서 내부 서버에 접근하여 요청을 전달하고 결과를 클라이언트에게 전달해주는 방식
  • 마찬가지로 클라이언트는 내부 서버를 접근하지 못하기 때문에 보안과 성능을 향상할 수 있다.
  • 여러 개의 내부 서버를 둘 수 있기 때문에 로드 밸런싱이나 서버 확장을 통해 트래픽을 분산시킬 수 있다.
  • 포워드 프록시 서버와는 반대로 내부 서버는 클라이언트를 알지만, 클라이언트는 프록시를 통해 내부 서버를 접근하기 때문에 내부 서버를 알지 못한다.

'기술정리' 카테고리의 다른 글

깃액션 CI/CD  (0) 2024.02.09
냉집사 Query Dsl 정리  (1) 2024.02.09
데이터 접근 기술 - 테스트  (2) 2024.02.05
MyBatis  (0) 2024.02.02
Jdbc Template  (0) 2024.02.02

관련글 더보기