서버에 Nginx를 셋팅하면
/etc/nginx/nginx.conf 파일(리눅스 기준)이 생성된다.
nginx.conf
nginx.conf 파일은 Nginx 기본 설정 파일이다.
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf
}
user nginx
리눅스 서버에서 Nginx 프로세스가 실행되는 권한.
보안상 모든 파일의 권한을 가지고 있는 root를 사용하지 않고 별도의 사용자 계정을 생성함
worker_processes
워커 프로세스의 수로, 1이면 모든 요청을 1개의 프로세스로 실행한다는 것을 의미.
CPU 멀티 코어 시스템에서 1이면 하나의 코어만으로 요청을 처리하는 것이 되고 보통 코어 수에 맞춰 설정 권장
만약 잘 모를 경우 auto로 설정하여 자동 감시 가능
worker_processes 1;
※ process
Nginx는 master process(1개), worker process(N개)로 구성.
- master process : 설정 파일 읽기, worker process 관리
- worker process : 모든 사용자의 요청 처리
worker_priority
값이 작을수록 높은 우선순위를 가지며 커널 프로세스의 기본 우선순위인 -5이하로 설정하지 않도록 권장
worker_priority 0;
error_log
nginx의 에러로그가 쌓이는 path와 로그레벨(debug, info, notice, warn, error 등)을 설정
error_log /var/log/nginx/error.log warn;
pid
nginx의 마스터 프로세스 아이디가 저장되는 path 설정
pid /var/run/nginx.pid;
worker_connections
위에서 설정한 하나의 worker process가 동시에 처리할 수 있는 커넥션(접속자)의 수 설정(default는 1024)
events {
worker_connections 1024;
}
include
포함시킬 외부 configuration 파일 설정.
해당 파일들이 include 위치에 삽입됨
- mime.types : 파일에 작성되어진 내용들을 현재 파일로 가지고 오는 것
- conf.d/*.conf : conf 파일(서버 속성 정의)을 포함한다는 것을 의미하며 default.conf도 포함
http {
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/*.conf;
}
default_type
웹서버의 기본 Content-Type 정의
http {
default_type application/octet-stream;
}
upstream
WAS 서버의 ip, port 지정
upstream docker-server {
server server:8080;
}
log_format
로그 형식 지정
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
}
access_log
접속 로그가 쌓이는 path 설정
http {
access_log /var/log/nginx/access.log main;
}
sendfile
sendfile는 한 파일의 디스크립터와 다른 파일의 디스크립터 간에 데이터를 복사하는 것으로 커널 내부에서 복사 진행
http {
sendfile on;
# sendfile off;
}
keepalive_timeout
커넥션 연결이 유지될 시간 정의
값이 높게 설정되면 커넥션이 불필요하게 유지되기 때문에 낮은 값 설정 권장
http {
keepalive_timeout 65;
}
server_tokens
header에서 nginx 버전을 보여줄 것인지 설정. 보통 보안상 off 설정
http {
server_tokens off;
}
default.conf
하나의 웹 사이트를 선언하는 데 사용하며, server 블록이 여러개면 한 host 주소에 여러 웹 사이트를 연결 가능
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
listen
해당 포트(80)로 들어오는 요청을 server 블록으로 처리한다는 것을 의미
server {
listen 80;
# http포트인 80번 포트를 통해 들어오는 요청을 해당 블록의 내용에 맞게 처리한다.
}
server
사용자가 test.com으로 접속하여 요청이 오면 root 위치 페이지를 서비스
server {
server_name test.com;
root /var/www/test.com
}
error_page
http 상태코드일 경우 해당 url로 이동
server {
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
location
특정 url을 처리하는데 사용하며 여러 개 사용 가능
만약 location / 일 경우, 처음 요청이 들어왔을 때 보여줄 페이지 지정
- root : static file이 있는 path
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
'💻 개발IT > Infra' 카테고리의 다른 글
[AWS RDS] MySQL Workbench 연결하기 (0) | 2023.06.01 |
---|---|
[AWS] EC2와 RDS 연동해보자! (0) | 2023.05.30 |
Netlify로 React 프로젝트 배포하기 (0) | 2023.05.28 |
[AWS] 초간단 Node.js 배포해보자! (feat. lambda(serverless)) (1) | 2023.04.08 |
[AWS] EC2와 도메인을 연결해보자! (0) | 2022.10.05 |
무료(& 유료) 도메인을 얻어보자! (Freenom, goDaddy) (1) | 2022.10.04 |
[AWS] Node.js를 배포해보자! (feat. EC2) (2) | 2022.09.27 |
쿠버네티스 기초 개념 정리 (0) | 2022.04.03 |