[Web] Nginx란? 소개부터 사용법까지

1 minute read


thumbnail-nginx

Nginx(엔진엑스라고 읽는다)는 정적 파일을 제공하는 웹 서버로, 최근 많은 프로젝트에서 도입되고 있고 Apache 서버를 대체할 수 있는 웹 서버로 평가된다. 특히 프론트엔드 서버와 백엔드 서버가 나뉘어져 있는 경우 프론트엔트 서버로 많이 사용된다. 또 백엔드 서버의 보안을 강화하기 위한 프록시 서버를 위해서도 사용될 수 있다.

Nginx vs Apache

Nginx는 HTTP요청이 들어올 때 요청하나 당 프로세스 혹은 스레드 하나가 요청을 처리 해주는 Apache와는 달리 하나의 스레드에서 모든 요청을 event-driven 방식으로 비동기 처리한다 (Node의 event-loop의 작동방식과 같다). 따라서 Nginx는 Apache에 비해서 서버의 자원을 적게 소모하면서 많은 요청이 들어왔을 때 더 빠르게 요청들을 처리할 수 있다. 하지만 Apache에 비해 모듈개발이 어렵고 지원하는 모듈이 적다는 것은 단점이라고 할 수 있다.

Nginx 설치 및 실행

대부분의 서버 환경은 Linux일 것이므로 Ubuntu환경을 기준으로 작성한다. 먼저 Nginx패키지를 설치해준다.

$ sudo apt update
$ sudo apt install nginx

패키지를 설치하게 되면 /etc 경로에 nginx 디렉토리가 생긴 것을 확인할 수 있다. 해당 디렉토리로에 있는 nginx.conf 파일이 nginx의 기본 설정 파일이다. 기본적으로 작성되어있는 내용이 있어 Nginx를 실행할 수 있다.

$ sudo service nginx start

그리고 해당 네트워크의 80번 포트로 접속하면 nginx가 성공적으로 작동중이라는 페이지를 확인할 수 있다.

나만의 웹서버 만들기

기본적으로 설정되는 /etc/nginx/nginx.conf 파일의 내용을 지우고 웹서버를 만들기 위한 기본 설정으로 다음과 같이 작성해준다.

/etc/nginx/nginx.conf

events {

}

http {
  server {

  }
}

http 블록 안에 포트나 서버 이름을 통해서 여러 개의 server블록을 둘 수 있다. 일단 하나의 html파일을 제공하는 서버를 정의한다.

server {
  listen 80;
  server_name localhost;
  location / {
    root /usr/share/nginx/html;
    index index.html;
  }
}

listen - 서버가 요청을 받을 포트번호
server_name - nginx는 요청이 들어왔을 때 요청의 host이름과 >server_name을 통해 요청을 처리할 서버를 찾는다.
location - 현재 “/” URI 경로로 들어온 요청을 처리할 행동양식을 정의한다.
root - 서버의 root 디렉토리를 설정한다. index - index파일을 설정한다


그리고 위에서 정의한 root디렉토리에 index.html파일을 생성한다. html 파일은 다음과 같이 같단하게만 작성해준다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello!</title>
</head>
<body>
    Hello Nginx!
</body>
</html>

nginx를 재설정 해준다.

$ nginx -s reload

해당 네트워크 주소로 접속하면 내가 만든 웹 서버가 잘 작동하는 것을 확인할 수 있다.

nginx-test

References

http://nginx.org/en/docs/http/request_processing.html
https://velog.io/@minholee_93?tag=Nginx

Categories:

Updated: