inblog logo
|
찬찬잉
    Front-end Developer

    nginx.conf 분석

    nginx.conf 분석을 해보자!
    찬찬잉's avatar
    찬찬잉
    Dec 07, 2023
    nginx.conf 분석
    찾아본 블로그를 먼저 소개해본다! 출처!
    나는 nginx 설정이 정말 싫다구요
    nginx 설정 nginx.conf와 conf.d를 알아보자
    나는 nginx 설정이 정말 싫다구요
    https://juneyr.dev/nginx-basics
    나는 nginx 설정이 정말 싫다구요
    Nginx의 기본 구성, Configuration file 분석, 정적 컨텐츠 처리
    지난 포스트에서 AWS EC2 인스턴스에 Nginx를 설치하고, 브라우저에서 Public IP 주소로 접속하여 Default 웹 페이지가 띄워지는 것을 확인하였다. 이제 단기 목표는 우리가 준비한 정적 컨텐츠(static contents)를 웹 서버를 통해 유저에게 제공하는 작업을 구현하고 이해하는 것이다.Nginx가 동작하는 기본적인 원리에 대해서 이해하면 좋을 것 같다. 더 넓고 엄밀한 의미에서 웹 서버가 어떻게 동작하는지에 대해 알기 위해서는 Nginx의 코드를 뜯어보고 이해해야 하겠지만, 우선은 정성적으로 configuration file의 구성요소들을 이해함으로써 더 얕은 수준의 이해를 추구할 것이다. ※ 포스트의 내용은 글이 쓰여진 일자(2016년 3월 14일) 기준으로 가장 최신의 NGINX..
    Nginx의 기본 구성, Configuration file 분석, 정적 컨텐츠 처리
    https://technerd.tistory.com/19
    Nginx의 기본 구성, Configuration file 분석, 정적 컨텐츠 처리
     
    nginx.conf 파일을 분석해보자
     
    user : Linux 시스템의 어느 user가 nginx 서버를 소유하고 동작시킬지를 기술한다.
    error_log : 에러 로그를 어느 위치의 어느 파일에 기록할지 정의한다.
    warn 모드 와 debug 모드 두개가 있다.
    error_log /home/foresys_pop/log/error.log;
    access_log : NginX 웹 서버로 접속한 내역들을 어느 문서에 적을지 정한다.
    #: #을 붙여서 주석처리를 할 수 있다.
     

    server directive와 location directive

    server { location / { root    /data/www; } }
    웹 서버를 하나 만들기 위해서는 server directive한 덩어리를 만들어야 웹 서버를 생성할 수 있다.
     
    자 어떻게 정적 컨텐츠를 처리하게 할 수 있을까?
    서버에서 브라우저로 보내줄 정적 컨텐츠를 작성하고, 특정 티렉토리에 위치 시킨 후
    서버 컴퓨터의 파일 시스템 디렉토리와 유저들이 요청할 URL을 적절하게 매핑시키면 될 것이다.
     
    이를 기술한 것이 location directive 다.
    location /api/ { proxy_pass http://211.6.14.71:8180/; }
    위와 같이 location 뒤에 붙는 인자가 호스트 네임(hostname) 뒤에 붙는 URL 패턴이 들어가는 자리이다. 위의 경우 /api의 경로를 proxy_pass 명령오로 변경하고있다.
     
    이외 → 이름, 인자값이 있고 세미콜론 ; 으로 끝납니다.
    worker_processes: 몇개의 워커 프로세스를 생성할 것인지 지정하는 지시어, 1이면 모든 요청을 하나의 프로세스로 실행하겠다는 뜻. CPU 멀티코어 시스템에서 1이면 하나의 코어만으로 요청을 처리하는 셈… 이건 auto로 놓는 경우가 많다고 한다.
    worker_processes 1; // auto;
    pid: Nginx pid가 적혀있는 파일입니다.
    include: 외부 configuration 내용을 가져옵니다. 모듈에 따라 다른 파일에 작성하고 include하는 것이 권장된다고한다.
    root: static file이 있는 파일 시스템의 경로이다. 이때 root 뒤에 location의 경로가 추가된 상태로 파일의 경로를 찾는다.
    server { location /images/ { root /main; } location / { proxy_pass http://211.6.14.71:8180/; } }
    만약 /images/imge.png 의 요청이 들어오면 Nginx는 /main/images/imag.png에서 파일을 찾는다.
    location /api/ { proxy_pass http://211.6.14.71:8180/; }
    잠깐 위에서 봣던 proxy_pass: 위에 예시에서 /images/와 맞지 않는 모든 패턴의 요청은 프록시 서버로 전송된다. 이후 프록시 서버에서 응답이 클라이언트에게 전송되게 된다.
     
    events { worker_connections 1024; }
    events 블록 : 이벤트 블록은 네트워크 동작방법과 관련된 설정이다.
    worker_connections: 하나의 프로세스가 처리할 수 있는 커넥션의 수이다. 그렇기에 worker_processes x worker_connections = 최대 접속자 수
     
    우리 회사에선 개별로 나눠논 conf 파일로 인해 http 블록이 없었다.
    http { include mime.types; server { listen 80; location / { root html; index index.html index.htm; } } }
    http 블록: 하위에 server 블록, 그리고 location 블록을 갖는 루트 블록이다.
    여기에 선언된 값은 하위 블록에 자동 상속
    → 서버의 기본값이 된다.
     
    즉 이렇게 nginx conf를 사용하는 방법을 찾아보았다.
     
    Share article

    찬찬잉

    RSS·Powered by Inblog