지난 시간 우리는 EC2 인스턴스에 nginx를 올려 간단히 호스팅해보기를 통해 Nginx 패키지를 설치하고 실행시켜보았다.
하지만 그 과정에서 만난 nginx.conf 파일과 nginx 디렉토리에 대해서 간단하게 설명만 했는데, 오늘은 더 깊게 알아보도록 하자.
Nginx 디렉토리 구조
우리는 nginx 패키지가 설치된 디렉토리로 가야한다.
그러기 위해서 기본 설정 파일이 있는 경로를 찾아야한다.
만약 당신이 위에서 했던 것 처럼 바이너리 파일을 yum이나 wget, apt-get으로 다운받았다면 운영체제의 계열별로 다른 위치에 존재할 수 도 있다.
하지면 리눅스 명령어로 이 파일들의 위치를 쉽게 찾을 수 있다.
> $ sudo find / -name nginx.conf
그리고 nginx.conf 파일이 있는 디렉토리에서 어떤 파일과 디렉토리가 있는지 확인해보자.
리눅스에서 디렉토리 구조를 트리형태로 나타내기 위해서는 tree 패키지를 인스톨해야한다.
> $ sudo yum install tree
> /etc/nginx$ sudo tree
명령어로 확인해보자.
그럼 위와 같이 출력되는데, 각각의 파일과 디렉토리는 다음과 같은 역할을 한다.
- nginx.conf : 메인 설정 파일
- fcgi.conf : Fast CGI 환경설정 파일
이제 nginx.conf 파일을 좀 더 깊게 알아보자.
nginx.conf
파일에 대해서
우선 nginx.conf 파일이 뭔지 궁금하니 리눅스의 cat
명령어로 nginx.conf 파일을 열어보자.
> $ sudo cat nginx.conf
그럼 다음과 같이 나온다.
뭔가 외계어가 나왔다.
겁먹지 말고 개념부터 알아보자.
nginx.conf
파일의 구성과 디렉티브
nginx.conf 파일의 구성은 디렉티브로 이루어져 있다.
이런 디렉티브들은 블록과 컨텐츠로 구성되어 있는데 Directive = Block + Countext
과 같이 구성된다.
디렉티브를 끝내는 방법
- 세미콜론
- 중괄호 블록
nginx.conf 에서 주석
#
그럼 이제 nginx.conf 파일을 나눌 수 있는 능력이 생겼다.
디렉티브들로 나눠보자.
nginx.conf
에서 최초의 디렉티브와 블록
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
. . .
}
http {
. . .
}
이는 nginx.conf 파일에 있는 디렉티브와 블록이다.
nginx.conf
에서 최초의 디렉티브와 블록을 나누면 다음과 같다.
디렉티브
최초 디렉티브는 다음과 같이 구서된다.
- user
- worker_processes
- error_log
- pid
얘들은 어떤 특정 블록이나 컨텍스트에 포함되지 않는 메인 컨텍스트라고 부른다.
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 블록
주로 네트워크의 동작 방법과 관련된 설정값들을 갖는다.
'🛠 Infrastructure > -- nginx' 카테고리의 다른 글
[Nginx] Nginx의 5가지 주요 기능에 대해서 알아보자. (로드 밸런싱, 캐싱, 장애 대응, 가상 호스팅, Keep Alive 제어) (0) | 2020.11.29 |
---|---|
[Nginx] Nginx 를 EC2 인스턴스에 설치해서 호스팅 맛보기. (0) | 2020.11.29 |
[Nginx] 왜 Nginx 이어야 하는가? Nginx의 주요 기능으로 알아보자. (2) | 2020.11.29 |
댓글0