Post

01 Nginx Setting

01 Nginx Setting

1. Nginx

1. Nginx

  • 서버 앞에서 트래픽을 받아서 정리하고 넘겨주는 고성능 웹 서버이자 리버스 프록시
  • Nginx는 “애플리케이션 서버 앞단”에서 처리
  • 이벤트 기반 구조
  • 매우 적은 리소스로 많은 동시 연결 처리
  • 문지기 + 교통정리 + 방패 역할을 하는 서버

2. Nginx 역할

  • 정적 컨텐츠 제공
  • SSL 처리
  • 로드 밸런싱
  • 장애 대응
  • 캐싱
  • 보안 처리 (IP 차단, 요청 수 제한)

3. Apache vs Nginx

구분NginxApache HTTP Server
기본 구조이벤트 기반, 비동기프로세스/스레드 기반
동시 접속 처리매우 강함 (적은 리소스)접속 수 증가 시 리소스 증가
메모리 사용적음상대적으로 큼
정적 파일 처리매우 빠름보통
동적 콘텐츠 처리리버스 프록시로 WAS에 위임모듈 기반으로 직접 처리 가능
설정 방식단순, 명확기능 많고 복잡
리버스 프록시매우 강력가능하지만 상대적으로 약함
SSL/TLS 처리고성능가능하나 설정 복잡
.htaccess지원 안 함지원
대표 사용처트래픽 입구, 프록시전통적 웹 서버

4. Nginx와 SpringBoot

  • Nginx는 웹 서버 / 리버스 프록시, 트래픽 입구, HTTPS 처리, 정적 파일 담당
  • 스프링부트는 애플리케이션 서버, 비즈니스 로직, API 처리 담당
  • Nginx는 입구에서 최초 정리, 스프링부트는 실제 비즈니스 처리.
  • nginx가 80번으로 받아서, 스프링부트로 포워딩

2. Nginx 생성

1. Nginx - Linux

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  # apt에서 설치 가능한 패키지 리스트(최신 패키지, 버전 등)를 최신화
  $ sudo apt update
  
  # nginx 설치에 필요한 라이브러리 설치
  $ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
  
  # nginx 공식 패키지를 설치 / 공식 문서에서 제공 
  $ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
      | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
  $ gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
  $ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
  http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
      | sudo tee /etc/apt/sources.list.d/nginx.list
  
  # nginx 설치
  $ sudo apt update
  $ sudo apt install nginx

2. 상태 확인 및 실행

1
2
3
4
5
6
7
8
  # nginx 상태 확인
  $ sudo systemctl status nginx
  
  # nginx 시작
  $ sudo systemctl start nginx
  
  # nginx 상태 확인
  $ sudo systemctl status nginx

3. 로그검증

1
2
3
4
5
6
7
  # Nginx 로그 파일 저장 장소
  $ cd /var/log/nginx
  
  # 파일의 마지막 10줄을 출력
  $ tail access.log
  $ tail error.log
 

3. Nginx 기본문법

1. Nginx의 설정 파일 위치

  • /etc/nginx/nginx.conf
    • Nginx에서 가장 근본이 되는 설정 파일(루트 설정 파일)
    • 전역적으로 설정되어야 하는 내용(워커 프로세스 개수, 로그 저장 위치 등)이 포함되어 있다.
  • /etc/nginx/conf.d/default.conf
    • 기본 웹 서버(Web Server) 설정 파일
    • 설정
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      server {
         listen       80;
         server_name  localhost; # localhost로 들어오는 접근은
      
         # 로케이션 설정
         location / {
             root   /usr/share/nginx/html;
             index  index.html;
         }
         
         # 부트처럼 별도 WAS가 있는 경우 (프록시를 사용해야함)
         location / {
            proxy_pass http://127.0.0.1:8080;
         }
      
         error_page   500 502 503 504  /50x.html;
          
         location = /50x.html {
            root   /usr/share/nginx/html;
         }
      }
      

2. 수정 관련 명령어

1
2
3
4
5
  # Nginx 설정 파일 중 문법 에러가 있는 지 체크
  $ sudo nginx -t
  
  # Nginx의 설정 파일이 바뀐 경우 아래 명령어를 입력해줘야 설정 파일이 반영된다.
  $ sudo nginx -s reload
This post is licensed under CC BY 4.0 by the author.