🧐 🤔 컴퓨터 옆 메모장 🙄 😙

Nginx 기본 설정

2024. 11. 9. Kim Evergood이가 씀

상위문서

설정파일 구조

  • 설정파일은 지시(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 헤더가 그 도메인인 요청)을 처리한다.

참고2
참고1

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