Developer.

[멋사 백엔드 19기] TIL 63일차 nginx

작성중

📂 목차


📚 본문

Nginx

nginx.conf

Nginx 설정은 기본적으로 지시문(Directives)컨텍스트(Contexts)라는 두 가지 주요 요소로 구성됨

기본 문법 규칙
  • 단순 지시문: 이름, 매개변수로 구성되며, 공백으로 구분하여 한 줄에 입력되고 세미콜론으로 끝남
user nginx;
worker_processes auto;
  • 블록 지시문 및 컨텍스트: 단순 지시문과 비슷하지만, 세미콜론 대신 중괄호({ })로 끝나고, 이 중괄호 안에는 다른 지시문(하위 컨텍스트 포함)이 포함될 수 있으며, 이를 컨텍스트 라고 부른다.
http {
    # 이 안에 다른 지시문이나 server 블록이 들어갑니다.
}
  • 주석: # 으로시작

  • 계층 구조 및 상속: 기본적으로 config 의 context 구조는 main -> events / http -> server -> location 순서의 계층 구조를 가지며, 상위 컨텍스트의 설정은 하위 컨텍스트로 상속되거나 하위 컨텍스트에서 재정의할 수 있다.

# 메인(main) 컨텍스트: 전역 설정
user nginx;
worker_processes auto; # 사용 가능한 CPU 코어 수에 따라 워커 프로세스 자동 설정

events {
    # 이벤트 컨텍스트: 연결 처리 방식 설정
    worker_connections 1024;
}

http {
    # HTTP 컨텍스트: 웹 서버의 전반적인 동작 설정
    include mime.types;
    default_type application/octet-stream;
    sendfile on;

    # 기타 HTTP 관련 설정 (gzip 압축 등)

    server {
        # 서버 컨텍스트: 특정 도메인 또는 포트에 대한 설정 (가상 호스트)
        listen 80; # 80번 포트에서 수신
        server_name example.com www.example.com; # 도메인 이름 설정

        location / {
            # 로케이션 컨텍스트: 특정 URI 경로에 대한 처리 방식 설정
            root /var/www/html; # 정적 파일의 루트 디렉토리 설정
            index index.html index.htm; # 기본 인덱스 파일 설정
        }

        location /api/ {
            # /api/ 경로에 대한 리버스 프록시 설정
            proxy_pass http://localhost:3000; # 백엔드 애플리케이션 서버로 요청 전달
            proxy_set_header Host $host;
        }
    }
}

중괄호에 포함안되는 전역적인 곳을 main block 으로 본다.

main block

주요 지시문은 다음과 같다.

  • user
  • worker_processes
  • error_log
  • include
events block
  • worker_connections
  • use
http block
  • server
    • location block
      • proxy_pass
      • root
      • index
      • return
      • rewrite
    • listen
    • server_name
    • root
  • include
  • mime.types
  • sendfile
  • gzip

전부 외울 필요는 없고 그때마다 찾아서 익숙해질 때까지 보면 될거 같다.