nginx의 특징
: 리액터와 핸들러로 구성된 Reactor 패턴
: 마스터 프로세스가 config 및 worker를 관리하고 여러 워커 프로세스가 실제 요청을 처리
: 기본적으로 싱글 쓰레드를 사용하기 때문에 몇 천개의 커넥션도 효율적으로 관리
nginx Conf 파일
- /etc/nginx/site-availables/default
: 1.10.x 버전의 설정 파일
: site-availables 디렉터리 아래에 별도로 파일을 만들어 관리하거나 default 파일을 수정하여 관리
- /etc/nginx/conf.d/default.conf
: 1.15.x 버전 이후의 설정 파일
: conf.g 디렉터리 아래에 사이트명.conf를 만들어 관리하거나 default.conf 파일을 수정하여 관리
- /etc/nignx/nginx.conf
: ngix에서 기본적으로 로드하는 기본 conf 파일
: http 블록 및 서버에 대한 전반적인 설정이 존재
: 해당 파일 내에서 conf 파일을 추가하여 커스터마이즈 한 구성 파일을 사용하도록 설정
http {
include /etc/nginx/conf.d/*.conf;
...
}
ngix Log 파일
- /var/log/nginx/access.log
: nginx로 접근하는 패킷에 대한 기록
- /var/log/nginx/error.log
: nginx 실행 중 발생한 오류에 대한 기록
지시어 (Directives)
: nginx 설정 파일은 지시어에 의해 제어되는 모듈로 이루어져 있음
: 지시어의 형식은 simple directive와 block directive가 있음
- simple directive
directive_name params
- block directive
directive_name {
...context
}
/etc/nginx/conf.d/.conf
- 정적 파일 경로 설정 방법 3가지
location ~* ^.+.(data)$
{
...,
# 1. 정적파일 경로 설정(http 경로에서 uri를 제외한 서버 절대경로)
root /www/seastory/file/;
}
# 2. 확장자 구분(정규식을 이용하여 설정)
location ~* ^.+.(?:jpg|jpeg|gif|png|ico)$ {
...,
}
# 3. 경로를 이용하여 설정
location /static/ {
...,
}
- WAS 연동 (conf 파일)
location / {
...,
# 임의로 생성한 설정파일인 /etc/nginx/proxy_params 파일을 include하여 WAS만의 설정을 가져옴
include proxy_params;
# WAS 주소
proxy_pass http://127.0.0.1:3000/;
}
- WAS 연동 (WAS 설정 파일, proxy_params)
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
proxy_redirect off;
- 가상 호스트 설정
http
{
# 첫 번째 가상 호스트
server
{
# 포트
listen 80;
# 첫 번째 호스트 이름
server_name aaa.domain.com;
# 접근 로그 파일 저장 경로
access_log logs/aaa.domain.com.access.log combined;
location /
{
#기본 홈 페이지 파일 순서 오른쪽에서 만약 찾지 않으면 일을 ndex.html 파일 찾기 index.htm 파일 로서 홈 페이지 파일
index index.html index.htm;
#웹 파일 저장 HTML 디렉터리
root /data0/htdocs/aaa. domain. com;
}
}
# 두 번째 가상 호스트
server
{
listen 80;
# 두 번째 호스트 이름
server_name bbb.otherdomain.com;
access_log logs/bbb.otherdomain.com.access.log.combined;
location /
{
index index.html index.htm;
root /data0/htdocs/bbb.otherdomain.com;
}
}
#세 번째 가상 호스트
server
{
listen 80;
# 세 번째 호스트 이름
server_name www.domain.com domain.com *.domain.com;
access_log logs/bbb.domain.com.access.log combined;
location /
{
index index.html index.htm;
root /data0/htdocs/domain.com;
}
}
}
: 호스트별로 conf 파일을 만들고 include 해서 사용할 수 있음
: 위 예제에서는 HTTP 헤더의 호스트 값을 기준으로 가상 호스트를 만듦
: 이외에도 포트 번호 등으로도 구분이 가능하다
Reference
'InfraStructure > Nginx' 카테고리의 다른 글
nginx 수동 설치 (0) | 2024.06.26 |
---|---|
nginx 기본적인 보안 설정 (HTTP Header에서의 정보 노출 방지) (0) | 2023.08.12 |
Nginx와 HAProxy 비교 (0) | 2023.06.17 |