설정파일 구조
- 설정파일은 지시(directive)들로 구성된다.
- 간단한 지시:
[이름] [파라미터...] ;
식으로 구성된다. - 블록지시:
[이름] [파라미터...]
까지는 간단한 지시와 같으나;
로 끝나는 대신 대괄호{}
안에 다시 지시들이 들어있다.
이 지시는 그 안의 지시들의 context이다.
다른 블록지시의 안에 있지 않은 최상위 지시들은 main context에 있다고 취급된다. #
뒷부분은 주석이다.
예시
user www www;
worker_processes 2;
error_log /var/log/nginx-error.log info;
events {
use kqueue;
worker_connections 2048;
}
...
몇 가지 지시
server
각 가상서버를 설정한다.
main 컨텍스트 안에 http 컨텍스트 안에.
listen
서버가 요청을 받을 주소나 포트번호를 지정한다. 아래 예시들
listen 127.0.0.1:80;
listen localhost:80;
listen 127.0.0.1;
listen 80;
listen 80 default_server;
listen *:80;
listen [::]:80; # IPv6 주소
listen [::1]; # IPv6 주소
포트가 지정되지 않으면 기본으로 80 사용
default_server
default_server
파라미터를 쓰면 이 서버는 기본 서버로 선택된다. default_server
를 쓴 서버가 없으면 첫번째 server 블록의 서버가 기본으로 선택된다.
server_name
Nginx가 요청을 처리할 서버를 선택할 때 참고하는 값 중 하나.
도메인 이름으로 설정할 경우; 이 서버는 그 도메인에서 온 요청(즉 Host 헤더가 그 도메인인 요청)을 처리한다.
location
요청의 URI에 따른 설정. 즉 location 블록들 중 매칭되는 요청의 처리에는 그 블록 안의 설정이 적용된다.
location /abc {...}
/abc
로 시작하는 URI가 매칭된다.location = /abc {...}
정확히/abc
와 일치하는 URI가 매칭된다.location = ~* regex {...}
정규표현식 regex와 매칭되는 URI가 매칭된다.
location 블록 안에 location 블록이 중첩되기도 한다.
※ 매칭 수행 전; URL 내 퍼센트인코딩(예: 띄어쓰기→'%20')은 디코딩된다.
파일 분리
설정파일 속의 특정 블럭만 떼서 별도 파일(/aaa
)로 분리한 뒤; 원래의 설정파일에서 include문을 쓰면 된다.
/etc/nginx/nginx.conf
http {
...
include /aaa;
}
/aaa
server {
listen 80;
listen [::]:80;
...
location / {
...
}
}
대개 서버별로 파일을 분리하여 별도 디렉토리에 모아놓는 게 관례라는 듯.
참고
728x90