지난 포스팅에서 우리는 Nginx가 뭔지 알아보았고 왜 Nginx를 쓰는지에 관해 알아보았다.
이번 포스팅에서는 Nginx의 실제 사용에 대해 알아본다.
필자는 AWS EC2에서 수행했다.
Nginx의 디렉토리 구조
우선, 제목에도 알 수 있듯이 Nginx의 핵심 파일은 nginx.conf이다. 이건 어디에 있을까?
find 명령어를 사용해서 /(루트 디렉토리) 부터 nginx.conf가 어딨는지 확인할 수 있다.
/etc/nginx 디렉토리의 내부 구성은 다음과 같다.
1. nginx.conf: 메인 설정 파일
2. fcgi.conf: Fast CGI 환경설정 파일
Nginx는 알겠는데 Fast CGI는 뭘까?
FastCGI
CGI(Common Gateway Inteface)의 한 형태로, 웹 서버와 애플리케이션 서버 간의 상호작용을 위한 통신 프로토콜이다.
기존 CGI는 클라이언트의 요청마다 새로운 프로세스를 생성하는데 FastCGI는 애플리케이션을 지속적으로 실행하는 데몬으로 관리한다.
또한, 요청이 있을 때마다 이미 실행중인 프로세스를 재사용한다.
이는 초기화 비용이 절감되게 해주며 처리 속도가 향상된다.
FastCGI에 관해 간단히 알아봤다.
이제는 본격적으로 nginx.conf 파일에 대해 좀 더 알아보자.
nginx.conf 파일에 관해서
대충 처음보는 구조이다.
우선 개념부터 알아보자.
nginx.conf 파일의 구성과 디렉티브
nginx.conf 파일의 구성은 디렉티브로 이루어져 있다.
이런 디렉티브들은 블록과 컨텐츠로 구성되어 있는 Directive = Block + Context과 같이 구성된다.
디렉티브를 끝내는 방법
일반 언어와 비슷하다.
- 세미콜론
- 중괄호 블록
nginx.conf에서의 주석 처리는?
- 파이썬과 Bash 처럼 #으로 주석처리할 수 있다.
이제 기본 nginx.conf 파일의 나눌 수 있게 되었다.
nginx.conf에서 나오는 최초의 디렉티브와 블록
user www-data;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
. . .
}
최초 디렉티브는 다음과 같이 구사된다.
- user
- worker_processes
- error_log
- pid
이 친구들은 특정 블록이나 컨텍스트에 포함되지 않는 메인 컨텍스트라고 부른다.
각각에 대해 알아보자.
user
user가 root로 지정되어 있으면 워커 프로세스가 root로 동작하게 되며,
이는 곧 사용자가 워커 프로세스를 악의적으로 사용할 수 있게 된다. (보안상 위험)
worker_process
워커 프로세스를 몇 개를 생성할 것인지 지정한다.
worker_connections
이벤트 안에서 사용하는 지시어인데 동시에 접속을 얼마나 처리할 것인지 지정이 가능하다.
worker_process가 4이고 worker_connections가 1024면 4 * 1024로 4096의 커넥션 처리가 가능하다.
블록
메인 컨텍스트와 별개로 추가적인 디렉티브로는 아래와 같은 블록이 있다.
- events {}
- http {}
Http 블록
http 블록은 웹 트래픽을 처리하는 디렉티브들을 담고 있으면서 Universal블록이라고도 한다.
그리고 http 블록에서 사용되는 모든 디렉티브들은 nginx 문서에서 참고 바란다.
Server 블록
하나의 웹 사이트를 선언하는데 사용되고, 가상 호스팅의 개념을 사용하여 하나의 서버로 두 개를 동시에 운영하고 싶을 때 사용한다.
location 블록
server 블록 안에서 사용되는 블록으로 특정 url를 처리하는 방법을 정의한다.
예를 들어 http://localhost:80/login 과 http://localhost:80/join 으로 접근을 다르게 하고 싶을 때 사용된다.
이는 로드밸런싱에서 자주 사용된다.
events 블록
주로 네트워크의 동작 방법과 관련된 설정값들을 갖는다.
'Infra > NGINX' 카테고리의 다른 글
[Nginx] Nginx에 SSL를 적용해보자(SSL 개념) (0) | 2024.03.17 |
---|---|
[Nginx] Nginx의 5가지 주요 기능을 nginx.conf 파일과 함께 알아보자 (0) | 2024.03.16 |
[Nginx] Nginx는 뭘까? Nginx 기능에는 어떤 것들이 있을까? (0) | 2024.03.16 |