Nginx 를 알기 전에 웹서버란?
HTTP 프로토콜을 이용하여 html 데이터를 클라이언트에게 제공해주는 서버이다. HTTP 프로토콜이란 OSI 7 계층인 application layer에 위치한 프로토콜로서 브라우저(클라이언트)와 서버 사이에 정보를 주고 받기 위한 프로토콜로 사용된다. 즉, 웹(사이트)를 이용한다면, 사이트로 들어갈 때, 어떤 방식을 사용해서, 서버는 어떻게 응답할 것인지를 정해놓은 약속이다.
- 웹서버로는 Nginx 와 Apache 등이 있다.
Nginx란?
nginx는 웹 서버중에 하나로 Apache와는 다른 방식의 웹서버이다. Apache와 비교되는 특징이자 장점으로는 다음과 같다.
- Event Driven 방식으로 동작(요청이 들어오면 어떤 동작을 해야하는지만 알려주고 다른 요청을 처리하는 방식(비동기 방식))
- 아파치의 C10K problem(한 웹서버에 10,000개의 클라이언트의 접속을 동시에 다룰 수 있는 기술적인 문제)를 해결
- 즉, 다수의 연결을 효과적으로 처리 가능하다
- 또한 event-driven 방식이라 가볍기도 하다
Nginx 를 활용하여 LEMP 스택을 구현해보자!
준비물
- Linux debian:buster
- Nginx
- php7.3
- mysql(mariadb)
- (추가) wordpress & 웹 페이지
비동기 방식에서 node.js를 떠올리는 사람이 있다면
node.js 창시자 라이언 달은 nginx를 프록시 서버로 앞단에 놓고 node.js를 뒤쪽에 놓는게 버퍼오버플로우 취약점에 의한 공격을 어느정도 방지한다고 하였다. 여기서 버퍼 오버플로우란 데이터가 저장되는 메모리 공간을 벗어나는 경우 오버플로우가 되고 이 때 사용되지 않아야 할 영역에 데이터가 덮어씌워져 주소, 값을 바꾸는 공격이다.
'개발 > Web' 카테고리의 다른 글
Nginx(엔진엑스)란? - 2편: 응용(도커 + LEMP 스택) (2) | 2021.02.23 |
---|