NGINX

김채영·2025년 3월 4일

NGINX

  • 매우 강력하고 인기있는 웹 서버 소프트웨어
  • 고성능과 확장성을 제공하는 웹 서버 및 리버스 프록시 서버 역할

웹 서버(WS)
주로 클라이언트가 보낸 HTTP 요청을 처리하고, 요청된 웹 페이지나 리소스를 클라이언트에게 전송
클라리언트(Client)
서비스를 이용하기 위해 네트워크를 통해 요청을 보내는 주체를 의미
WAS(Web Application Server)
클라이언트 요청에 대해 동적인 처리 담당하는 영역
웹 서버와 달리 애플리케이션 로직 실행 가능하도록 구성


구조

  • 높은 성능을 가질 수 있는 이유는 요청에 응답하기 위한 비동기식 이벤트 기반 구조
  • 구글 검색엔진에서 Nginx와 함께 상위 랭킹을 차지하고 있는 Apache는 nginx와 다르게 스레드/프로세스 기반 구조

NIGNX 동작

  • 정적 콘텐츠 제공
    -> HTML, CSS, JS, Image 등의 정적 파일을 직접 제공
  • 리버스 프록시
    -> 클라이언트의 요청을 받아서 다른 서버로 전달하고, 그 응답을 클라이언트에게 다시 전달
    -> 여러 백엔드 서버로의 요청을 분배하는 로드 밸런싱을 지원해 서버의 부하를 분산
  • 로드 밸런싱
    -> 여러 개의 백엔드 서버에 트래픽을 분산
    -> 라운드 로빈, 최소 연결 등의 방식 지원

    라운드 로빈(RR)
    시분할 시스템을 위해 설계된 선점형 스케줄링
    프로게스들 사이에 우선순위를 두지 않고, 순서대로 시간단위로 CPU를 할당하는 방식의 CPU 스케줄링

  • HTTP 캐싱
    -> 정적 콘텐츠나 API 응답을 캐싱하여 성능 최적화
  • 보안 및 HTTPS 설정
    -> SSL/TLS 적용ㅇ을 통한 보안 강화

    SSL/TLS 암호화
    보안 연결을 위한 프로토콜로, HTTP로 웹사이트에 안전하게 접근


설정 파일(Docker -> Nginx)

### bash
mkdir -p /docker/nginx/conf /docker/nginx/certs /docker/nginx/logs
nano /docker/nginx/conf/default.conf

### .conf
server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://gitlab:80;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    error_page 404 /404.html;
    location = /404.html {
        root /usr/share/nginx/html;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

참고자료
https://jwprogramming.tistory.com/17
https://eun-jeong.tistory.com/17
https://blog.naver.com/gi_balja/223028077537

profile
백엔드 개발⭐

0개의 댓글