본문 바로가기

[Nginx] Nginx 기본 문법 해석하기

@bum0w02025. 7. 27. 17:06

Nginx 기본 문법

Nginx를 설치하고 실행까지 마쳤다면, 이제 운영 환경에 맞게 설정 파일을 다루는 법을 익혀야 한다.

Nginx는 설정 파일을 기반으로 동작하기 때문에 설정 파일의 위치와 기본 문법 구조를 이해하는 것이 중요하다.

 

Nginx의 설정 파일은 크게 2가지가 존재하며 다음 경로에 위치한다.

  1. /etc/nginx/nginx.conf
    • 최상위 설정 파일로여기에 포함된 지시어(디렉티브)에 따라 Nginx 전체적인 동작이 정의됨
    • 전역 설정, 이벤트 설정, HTTP 블록, Include 지시어 등의 기본 설정
  2. /etc/nginx/conf.d/default.conf
    • 기본 웹 서버(Web Server) 설정 파일
    • 포트, 도메인, 루트 경로, 리버스 프록시 등의 세부 설정

 

이 두 가지 설정 파일 중 /etc/nginx/conf.d/default.conf 파일을 중심으로 설정 구조와 기본 문법을 파악해보자.

/etc/nginx/conf.d/default.conf

server {
    # 클라이언트 요청을 수신할 포트 (기본 HTTP 포트)
    listen       80;
    # 요청된 도메인 이름이 'localhost'일 때 이 서버 블록이 사용됨
    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 {
	# 위에서 정의한 50x.html 에러 페이지의 실제 위치 지정
        root   /usr/share/nginx/html;
    }
}
설정 파일 작성 시 세미콜론(;)을 빠뜨려서 에러가 발생하는 경우가 많다. 반드시 각 지시어 끝에 세미콜론을 붙여야 한다.

 

1. server 블록

  • Nginx가 처리할 하나의 가상 서버(가상 호스트)를 정의한다.
  • 여러 도메인이나 사이트를 운영할 때 각각 별도의 server 블록을 만들어 설정할 수 있다.  

2. listen 80;

  • Nginx가 이 서버 블록에서 클라이언트의 요청을 수신할 포트를 지정한다.
  • 여기서는 기본 HTTP 포트인 80번 포트를 사용하겠다는 의미이다.  

3. server_name localhost;

  • 클라이언트가 요청할 때 사용하는 도메인 이름을 지정한다.
  • 여기서는 localhost로 요청이 들어올 때 이 서버 블록이 적용된다.
  • 실제 운영 환경에서는 도메인 주소를 넣어 여러 사이트를 구분한다.  

4. location / { ... }

  • URI 경로가 루트(/)로 시작하는 모든 요청을 처리하는 설정이다.
  • 예를 들어, http://localhost/ 와 같이 요청이 들어오면 이 블록의 설정이 적용된다.

5. root /usr/share/nginx/html;

  • 요청한 파일을 찾을 기본 디렉터리 경로를 지정한다.
  • 즉, /usr/share/nginx/html 폴더 내에서 요청한 리소스를 찾겠다는 뜻이다.

6. index index.html index.htm;

  • 디렉터리 요청 시 기본적으로 보여줄 파일을 지정한다.
  • 예를 들어, / 만 요청했을 때 index.html 또는 index.htm 파일이 자동으로 반환된다.

7. error_page 500 502 503 504 /50x.html;

  • 서버 내부 오류(HTTP 상태 코드 500, 502, 503, 504)가 발생했을 때 보여줄 사용자 정의 에러 페이지를 지정한다.
  • 여기서는 /50x.html 파일로 에러 페이지를 대체한다.

8. location = /50x.html { ... }

  • 정확히 /50x.html 경로에 대한 요청을 처리하는 별도 블록이다.
  • 이 파일 역시 /usr/share/nginx/html 경로에서 찾아서 클라이언트에 반환한다.  

 

Nginx 디버깅 방법

설정 파일을 수정한 경우에는 반드시 문법 오류가 없는지 확인하는 과정이 필요하다. Nginx는 작은 문법 오류에도 실행이 되지 않거나 서비스에 장애가 발생할 수 있기 때문에 변경 사항을 적용하기 전에 디버깅 과정을 거치는 것이 매우 중요하다.

 

다음은 Nginx 설정을 점검하고 문제를 해결하는 데 도움이 되는 기본적인 방법들이다.

 

1. Nginx 서비스 상태 확인

$ sudo systemctl status nginx
  • 현재 Nginx 서비스가 실행 중인지, 중단되었는지, 또는 에러가 발생했는지 등을 확인한다.

2. 설정 재적용

$ sudo nginx -s reload

 

  • 문법 검사를 통과한 설정을 실제 Nginx에 반영한다.
  • 서비스 중단 없이 설정만 갱신한다.

3. 설정 문법 검사

$ sudo nginx -t
  • 설정 파일의 문법 오류를 검사한다.
  • 오류가 있으면 어떤 줄에서 문제가 발생했는지 상세하게 알려준다.
  • 문법 오류가 없으면 “syntax is ok” 메시지를 출력한다.

4. 로그 파일  확인

# 실시간으로 access 로그(클라이언트의 요청 정보)를 확인
$ sudo tail -f /var/log/nginx/access.log

# 실시간으로 error 로그(Nginx 에러 발생 내역)를 확인
$ sudo tail -f /var/log/nginx/error.log

 

  • 운영 중 발생하는 요청 흐름이나 에러를 실시간으로 추적한다.
bum0w0
@bum0w0 :: bum0w0 님의 블로그

bum0w0 님의 블로그 입니다.

목차