NGINX

이 글은 윤준성의 개발꼬맹이 시절, 혼자 노션에 공부하며 정리해둔 것 중 괜찮은 것을 추려올린 글입니다. 기술블로그 글 기고 목적으로 작성되지 않아, 가독성이 좋지 않거나 알 수 없는 워딩이 있을 수 있습니다.

웹서버의 역할

정적 파일을 처리하는 HTTP 서버

  • HTML, CSS, JS, 이미지 등 정적 파일들의 처리

응용프로그램 서버에 요청을 보내는 리버스 프록시 서버

  • 클라이언트는 가짜 서버(NGINX)에 request
  • 가짜 서버는 진짜 배후 서버(reverse server)로부터 데이터를 가져옴
  • 이점?

    • 보안 상의 이점

      • 보통 기업의 네트워크 환경은 메일서버, 웹서버, FTP 서버 등이 위치하는 DMZ가 존재
      • DMZ가 털려도 이들은 어차피 그들에게 주어진 포트에만 접속 가능하므로 내부 망으로 연결 불가
    • 로드 밸런싱

      • 클라이언트가 직접 서버에 요청하면 프로세스 1개는 응답 대기상태로 기다려야 함
      • 프록시 서버를 둠으로써 요청을 배분하는 역할

참고) 포워드 프록시 vs 리버스 프록시

포워드 프록시

  • 클라이언트가 요청을 보낸 서버 대신 요청을 받아 원래 요청을 보낸 서버에 대신 전달해줌
  • LAN → WAN의 요청을 대리로 수행

리버스 프록시

  • 클라이언트로 부터 직접 요청을 받아 배후 서버에 전달해줌
  • WAN → LAN의 요청을 대리로 수행

클라이언트가 최초에 요청을 보내는 곳의 차이!

Nginx 디렉토리 구조

├── conf.d # (디렉토리) nginx.conf에서 불러들일 수 있는 파일을 저장
├── fastcgi.conf # (파일) FastCGI 환경설정 파일
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf # 접속자 수, 동작 프로세스 수 등 퍼포먼스에 관한 설정들
├── proxy_params
├── scgi_params
├── sites-available # 비활성화된 사이트들의 설정 파일들이 위치한다.
│   └── default
├── sites-enabled # 활성화된 사이트들의 설정 파일들이 위치한다. 존재하지 않은 경우에는 디렉토리를 직접 만들 수도 있다.
│   └── default -> /etc/nginx/sites-available/default
├── snippets
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf

NGINX 기본 환경 설정 튜닝 및 설명 - 익스트림 매뉴얼

sites-available에 server block을 추가해서 적절히 커스텀 가능


Written by@Junsung Yoon
Software Enginner focusing on Node.js

GitHubLinkedIn