티스토리 뷰

백엔드

Nginx의 역할에 대해 아시나요🤔

JeongeunChoi 2024. 6. 21. 10:24

SSL 인증서를 사용해 웹사이트를 HTTPS로 열 수 있도록 EC2에 Nginx를 설치해보았지만

막상 Nginx의 역할은 뭐지? 하고 생각해보니 proxy pass 기능 밖에 떠오르지 않았습니다 ..😅💦

Nginx가 무엇인지. 아파치와는 무슨 차이가 있는지. 또 무슨 역할을 하는지 정리해보고자 합니다✏️


 

Nginx란?

경량 웹 서버로, HTTP 요청을 처리하고 다른서버로의 요청을 전달합니다.

아파치에 비해 기능은 적지만 경량화 되어있어 EC2 프리티어에서 사용하기 좋습니다. (적용해봤는데 잘 돌아갑니다👍)

 


Apache vs Nginx

 

이 둘은 요청 처리 방식에서 차이가 있습니다.

 

1. Apache

요청마다 새로운 쓰레드를 생성하여 처리
  • 프로세스 생성 시간이 오래 걸리므로 요청이 들어오기 전에 프로세스를 미리 생성하는 PREFORK 방식을 사용
    만들어 놓은 프로세스가 모두 할당되면 추가로 프로세스를 만듭니다.
  • 요청 많을 수록 자원 소모 多

 

2. Nginx

이벤트 기반 처리 구조방식
  • 마스터 프로세스는 설정 파일을 바탕으로 워커 프로세스를 생성하고, 워커 프로세스는 생성될 때 각자 지정된 listen 소켓을 배정받습니다.
  • 소켓에 새로운 클라이언트 요청이 들어오면 커넥션을 형성하고 처리한다. 커넥션은 정해진 Keep Alive 시간만큼 유지되며, 아무런 요청이 없으면 새로운 커넥션을 형성하거나 새로운 요청을 처리합니다.
  • 이벤트들은 OS 커널이 큐 형식으로 워커 프로세스에게 전달해줍니다.
  • 큐에 담긴 요청중 하나가 시간이 오래 걸리면 스레드 풀에 이벤트를 위임하고 다른 이벤트를 처리한다.
  • 워크 프로세스는 보통 CPU 코어 수만큼 생성하게 됩니다.

 


Nginx 역할 정리

  • 웹 서버:
    • 정적 파일(HTML, 이미지, CSS, JavaScript 등)을 제공하는 고성능 웹 서버로 사용됩니다.
  • 리버스 프록시 서버:
    • Nginx는 클라이언트 요청을 백엔드 서버로 전달하는 리버스 프록시 서버로 많이 사용됩니다.
  • 로드 밸런서:
    • Nginx는 여러 서버에 트래픽을 분산시키는 로드 밸런서 역할을 합니다.
  • 캐시 서버:
    • Nginx는 정적 콘텐츠와 동적 콘텐츠를 캐싱하여 서버의 성능을 향상시킬 수 있습니다. 이를 통해 응답 시간을 줄이고 서버 부하를 감소시킵니다.
  • SSL 설정
    • SSL 인증서를 사용하여 데이터를 암호화하고, 이를 웹 브라우저에 전달합니다.