Nginx 란?
안녕하세요. 이번에는 프로젝트에 Nginx를 적용하기 전에 공부한 내용을 작성해보려고 합니다.
Nginx란?
Nginx는 경량 웹 서버입니다. 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 웹 서버로 활용되기도 하고, Reverse Proxy Server로 활용하여 로드 밸런서, 캐시 처리, 암호화 기능을 처리할 수 있습니다.
Nginx의 특징
Nginx의 가장 큰 특징은 비동기(Event-Driven) 구조로 동작하기 때문에 한 개 또는 고정된 프로세스만 생성하여 사용하고, 요청들을 Concurrency 하게 처리할 수 있습니다. 그에 따라 동시 접속자 수가 늘어날수록 자원이 증가하는 Apache 서버에 비해 Nginx는 적은 자원으로 효율적인 운용이 가능해 동시 처리 수를 급격히 늘릴 수 있습니다.
아래의 이미지를 보시면 Apache 서버와 Nginx 서버의 구조를 이해하실 수 있을 겁니다.
출처 : https://brainbackdoor.tistory.com/28
Nginx는 하나의 Master Process와 다 수의 Worker Process로 구성되어 있습니다. 이처럼 Single Thread 기반의 프로세스 구동 방식을 채택해 Context Switching을 하지 않기 때문에 CPU 사용률을 감소시킬 수 있습니다.
Master Process는 설정 파일을 읽고, 유효성 검사 및 Worker Process를 관리합니다. 모든 요청은 Worker Process에서 처리하며, 개수는 설정 파일에 의해 정의되며, 정의된 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정됩니다.
만약 실제 데이터를 읽고 쓰는 동작이 자주 일어난다면 Apache 서버가 더 좋을 수 있습니다. Nginx는 비동기 구조로 동작하기 때문에 실제 데이터를 읽고 쓰는 건 OS(커널) 내에 있는 시스템 호출 프로그램과 하드웨어 사이에서 실행되므로, 해당 처리가 너무 길어지면(I/O 시간이 길어지면) 결국 시스템 호출 큐에 요청이 많이 쌓여 성능이 저하될 수 있기 때문입니다. 그러나 대부분의 웹 서버는 캐시 제공, 리버시 프록시 서버 등으로 활용되기 때문에 Nginx를 더 많이 사용하는 것 같습니다.
Nginx 설치하기
CentOS 7 서버에서 설치를 진행했습니다.
1. Nginx 저장소를 추가합니다.
sudo vim /etc/yum.repos.d/nginx.repo
2. 추가한 저장소 파일에 아래의 내용을 추가합니다.
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
3. Nginx를 설치합니다.
sudo yum install nginx
4. 설치된 Nginx 버전을 확인합니다.
nginx -v
버전이 잘 나오면 정상적으로 설치된 것입니다.
5. Nginx를 시작합니다.
systemctl start nginx
6. Nginx 자동 시작을 등록합니다.
systemctl enable nginx
7. 포트 개방
개인 서버를 사용하신다면 방화벽에서 웹 서버 포트(기본 80)를 개방해주시면 되고, 클라우드 서비스를 이용하신다면 콘솔에 가셔서 보안 규칙을 수정해주시면 됩니다.
8. 웹 브라우저로 확인하기
마지막으로 웹 브라우저를 실행시킨 뒤 도메인 주소 또는 공인 IP로 접속하시면 Nginx 소개 페이지가 뜨는 것을 확인하실 수 있습니다.
다음에는 진행하는 프로젝트를 이용해 정적 파일 호스팅 서버, 프록시 서버를 구축한 후 WAS 서버를 연동시켜보겠습니다.
참고
'개발 > Server' 카테고리의 다른 글
CentOS 7 에서 MySQL 5.7 설치하기 (0) | 2021.10.03 |
---|---|
CentOS 7 / 계정에 sudo 권한 주기 (0) | 2021.10.03 |
CentOS 7 / 계정 비밀번호 변경하기 (0) | 2021.10.03 |
댓글