티스토리 뷰
안녕하세요. 이어서 작업을 해볼까 해요!
1. nginx.conf 파일 구조
: nginx.conf파일은 크게 4가지의 섹션으로 나눌 수 있는데요
- Main (global) context
- Events context
- HTTP context
- Server and Location contexts
: 이렇게 구분하고 추가적으로 Upstream context, Mail context, If context , Limit_except context가 있습니다.
1.1 Main (global) context
: Nginx 서버의 전체적인 설정 관리
: 로그 설정, 사용자 및 그룹 설정, worker 프로세스 설정 등
: conf파일 최상단에 위치
- 주요 지시문
# 1. user: Nginx 프로세스가 실행될 사용자와 그룹을 설정
# Ex)
user nginx;
# 2. worker_processes: Nginx가 사용할 워커 프로세스의 수를 설정(보통 auto)
# Ex)
worker_processes auto;
# 3. pid: Nginx의 프로세스 ID 파일 위치를 설정
# Ex)
pid /var/run/nginx.pid;
# 4. error_log: Nginx의 에러 로그 파일 위치를 설정
# Ex)
error_log /var/log/nginx/error.log warn;
# 5. worker_connections: 각 워커 프로세스가 동시에 처리할 수 있는 연결 수를 설정
# Ex)
worker_connections 1024;
- 생략
1.2 Events context
: Nginx가 클라이언트의 요청을 처리하는 방식 정의
: 연결 처리 방식, 이벤트 모델 등을 설정
- 주요 지시문
# 1. worker_connections: 각 워커 프로세스가 동시에 처리할 수 있는 최대 연결 수를 설정
# Ex)
events {
worker_connections 1024;
}
# 2. use: Nginx가 사용할 이벤트 모델을 지정
# Ex)
events {
use epoll; ## Linux 시스템에서 효율적인 이벤트 처리 방식
worker_connections 1024;
}
- 생략
1.3 Server and Location context
: HTTP 요청을 처리(사실 아래의 http context 섹션 안의 내용에 대한 내용)
: 각각 하나의 서버와 그 서버 내에서 특정 경로에 대한 요청을 처리하는 방법을 정의
- Server 블럭
: 하나의 웹 서버를 정의
: 각 블럭은 포트와 도메인 이름, 요청 처리 방법 등을 설정
- listen 지시어로 포트를 설정
- server_name으로 도메인을 지정
- location 지시어는 이 서버에서 특정 경로에 대한 요청 처리 정의
- location 블럭
: 특정 URL 경로에 대한 요청을 처리하는 방법을 정의
: 여러 가지 조건에 따라 요청을 다르게 처리 가능- location /images/ {}: /images/ 경로에 대한 요청 처리
- location ~ \.php$ {}: PHP 파일에 대한 요청 처리
- location = / {}: 정확히 / 경로에 대한 요청 처리
- 공통
- root: 웹 서버의 기본 디렉토리 설정
- index: 기본 파일 설정. 보통 index.html or index.php를 설정
=> index.html파일을 찾고 없으면 에러 반환-> 다른 이름의 파일 사용 시, 꼭 명시... - proxy_pass: 리버스 프록시를 설정할 때 사용
==> 이슈!
: server 블럭에서 root의 index의 값을 만약, index.html이 아닌 다른 파일로 설정 시,
하위의 location의 index의 기본 값은 위의 파일 명이 된다...이거 몰라서 헤멨다...
1.4 HTTP context
: Nginx가 HTTP 요청을 처리하는 모든 설정 관리
: 서버의 리버스 프록시 설정, 로드 밸런싱, SSL 설정, 요청 처리 규칙 정의
- 주요 지시문
# 1. server: 실제 웹 서버의 설정을 정의
# 여러 개의 server 블록을 정의하여 다양한 도메인과 포트를 처리 가능
# Ex)
http {
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
}
# 2. listen: 서버가 요청을 수신할 포트를 설정
# Ex) listen 80;
# 3. server_name: 서버 블록이 응답할 도메인 이름을 설정
# Ex) server_name example.com www.example.com;
# 4. location: URL 경로에 따른 요청 처리를 설정
# Ex)
location /images/ {
root /var/www/html;
}
# 5. access_log: 클라이언트의 요청 로그 파일 위치를 설정
# Ex) access_log /var/log/nginx/access.log;
# 6. error_page: 오류 페이지를 사용자 정의
# Ex) error_page 404 /404.html;
# 7. gzip: HTTP 응답에 대해 gzip 압축을 활성화
# Ex)
gzip on;
gzip_types text/plain text/css application/javascript;
# 8. include: 다른 설정 파일을 포함 설정(모듈화를 위해)
# Ex) include /etc/nginx/sites-enabled/*;
2. 시작
일단 nginx.conf 안의 내용을 지워주세요. 하나씩 해보면서 하려고 합니다.
아, 그리고 conf파일 변경 시, 터미널을 통해
nginx -s reload
를 해주세요.
만약 반영이 그래도 안된다면 "강력 새로고침"을 통해 저장된 캐시를 날려서 다시 받는 환경을 만들어야 합니다.
아 그리고 nginx서버에 띄울 화면 구성도 만들어주세요!!
참고
https://dev.to/kabilan/understanding-nginx-core-contexts-52o8
'정리용 > nginx' 카테고리의 다른 글
[Nginx] nginx 조작-2 (1) | 2024.12.22 |
---|---|
[Nginx] nginx 설치 및 실행 (0) | 2024.12.21 |
[Nginx] nginx는 무엇인가? (0) | 2024.12.21 |