Nginx 기본정리

김호준·2021년 12월 9일
0

Nginx 란 무엇일까 ?

  • 트래픽이 많은 웹사이트를 위해 확장성을 위해 설계한 비동기 이벤트 기반구조의 웹서버 소프트웨어이다.

  • Nginx는 가벼움과 높은 성능을 목표로 하는 웹 서버 소프트웨어로 현재 Apache 서버를 제치고 세계에서 가장 많이 사용되는 웹 서버이다.

  • 일반적으로 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가지고 있다.

Ngnix의 특징

    1. 비동기 Event-Driven 기반의 구조이다.
    • 쓰레드 기반은 하나의 커넥션당 하나의 쓰레드를 생성하지만 Event-Driven 구조는 여러 커넥션을 Event Handler에서 비동기 방식으로 처리하여 먼저 처리되는 것부터 로직이 진행되도록 한다.

    1. 다수의 연결을 효과적으로 처리 가능하다.
    1. 대부분의 코어 모듈이 Apache보다 적은 리소스로 더 빠르게 동작이 가능하다.
    1. 더 작은 쓰레드로 클라이언트의 요청들을 처리 가능하다.

Nginx의 활용

Nginx는 다음과 같은 기능으로 사용할 수 있다.

  • HTTP Server

    • 정적 파일을 처리하는 web server의 역할을 수행
  • Reverse Proxy Server

    • 클라이언트의 요청을 받아 웹서버로 전달하여 응답을 받은 후 다시 클라이언트에 전달하는 역할을 수행하는 서버로 클라이언트와 웹 서버 사이에 존재하는 서버로 정의할 수 있다.
    • 클라이언트의 요청을 Application Server에 배분
    • 클라이언트 80 포트 요청을 8080, 8081 등 여러 Application Server로 보내준다.
    • 각 Application Server에 요청을 배분하여 부하를 분산 (로드 밸런싱)
      • 로드밸런싱 되어있는 서비스는 자연스럽게 어떤 포트가 개방되어 있는지 IP는 무엇인지 외부에서 쉽게 알 수 없게 되어 결과적으로 보안적인 이점을 가져올 수 있다.
  • 메일 프록시 서버 (Mail Proxy Server)

  • Generic TCP / UDP Proxy Server

Nginx의 구조

  • Nginx는 하나의 Master Process와 다수의 Worker Process로 구성되어 실행된다. Master Process는 설정 파일을 읽고, 유효성을 검사하고 Worker Process를 관리한다. 모든 요청은 Worker Process에서 처리한다.

  • Nginx는 이벤트 기반 모델을 사용하고, Worker Process 사이에 요청을 효율적으로 분배하기 위해 OS에 의존적인 매커니즘을 사용한다.

  • Worker Process의 개수는 설정파일에서 정의되며, 정의된 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정된다.

Nginx의 실행과 중지

  • 윈도우 CMD 이용

    • 윈도우에서는 cmd에서 nginx가 설치되어 있는 폴더로 이동한 후 아래의 명령어를 사용해 nginx를 제어할 수 있다.

      설명명령어
      기동nginx.exe
      강제 종료nginx -s stop
      종료nginx -s quit
      재시작nginx -s reload
      로그파일 재작성nginx -s reopen
      서비스 상태 확인tasklist /fi "imagename eq nginx.exe"
  • 리눅스 이용

    • 리눅스에서는 systemctl 명령어를 사용해 nginx를 제어할 수 있다.
      설명명령어
      기동$ sudo systemctl start nginx
      종료$ sudo systemctl stop nginx
      재시작$ sudo systemctl restart nginx
      재로드$ sudo systemctl reload nginx
      서비스 상태 확인$ sudo systemctl status nginx

Nginx의 기본 설정

  • Nginx의 conf폴더의 nginx.conf 파일이 기본 환경파일이다.

  • 기본 구조

영역내용
텍스트Core 모듈코어 모듈은 대부분 환경 설정 파일의 최상단에 위치하며 한번만 사용할 수 있다. nginx의 기본적인 동작 방식을 정의한다.
Http 블록웹서버에 대한 동작을 설정하는 영역으로, server 블록과 location 블록의 루트 블록이다.
Server 블록하나의 웹사이트를 선언하는 데 사용된다. 가상 호스팅(Virtual Host)의 개념이다.
Location 블록server 블록 내에서 특정 URL을 처리하는 방법을 정의한다.
Events 블록주로 네트워크 동작에 관련된 설정하는 영역으로, 이벤트 모듈을 사용한다.
profile
Go-getter Developer

0개의 댓글