ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Nginx Configuration 정리
    메모 및 기타 2021. 9. 10. 19:35

    1. nginx의 역할

     

    - 정적인 리소스를 처리  

    - 리버스 프록시로 사용

    - 로드밸런싱 

     

     

     

    2. nginx command

     

    nginx -s [signal]

     

    signal에는 다음과 같은 커맨드가 들어갈 수 있다. 

     

    - reload: 설정 파일을 reload한다. 

    - stop: nginx을 stop한다. 

    - reopen: 로그 파일 재오픈한다. 

     

    변경한 configuration을 적용해야하므로 nginx -s reload 커맨드를 사용한다. 

     

    참고로 필자는 docker의 nginx이미지를 이용해서 nginx를 동작시켰는데  

    이때 configuration 파일의 위치는 /etc/nginx/nginx.conf에 위치한다. 

     

     

     

    3. Directives

     

    nginx는 여러 모듈들로 구성되며 이러한 모듈들은 

    configuration파일에 있는 directives에 의해 제어된다. 

     

    다음은 수정한 nginx.conf 파일인데 다음 파일을 통해 directive란 무엇인지 알아보자. 

     

    /etc/nginx/nginx.conf

    # simple directives
    
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log notice;
    pid /var/run/nginx.pid;
    
    
    
    # block directives 
    
    events {
        worker_connections 1024;
    }
    
    http {
    
        server {
           listen 127.0.0.1:80
           location / {
                proxy_pass http://172.30.1.16:8082
            }
           location /images/ {
                root /data
            }
        } 
       server {
            # HTTP 가상 호스트에 대한 설정
        }
    }
    
    stream {
        server {
        # 가상 호스트에 대한 설정
        }
    }

     

    우선 directive는 크게 두가지로 나뉜다. 

     

    < simple directives >

     

    user: nginx 서버를 동작시킬 사용자 

    work_proccess: 동작시킬 thread의 갯수를 지정할 수 있다.

    pid: nginx의 Pid가 적혀있는 파일

    include: 외부 configuration파일을 import한다. (모듈에 따라 파일을 작성하는 것이 권장한다.)

     

     

     

    < block directives >

     

    block directives는 block 단위로 directive를 명시한 것들이다. 

     

    block directives 내부에 들어가 있는 것들을 context라 하며 

    event, http, server, location등이 있다. 

     

    1) event의 경우 connection에 대한 것들을 담당하며 

    2) http는 http traffic

    3) stream은 TCP와 UDP 트래픽을 담당한다. 

    4) server의 경우 가상 호스트를 의미한다. 

     

     

     

    4. 예시 

     

    전체적인 예시를 통해 configuration을 살펴보자. 

     

    /etc/nginx/nginx.conf

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log notice;
    pid /var/run/nginx.pid;
    
    events {
        worker_connections 1024;	# worker process하나당 몇개의 커넥션을 처리할지 설정 
    }
    
    http {
    	# include /etc/nginx/conf.d/*.conf
        # include를 통해 /etc/nginx/conf.d/*.conf에 해당하는 모든 문서를 
        # http directives 내부에 포함된것으로 처리 
        
    	# virtual server1
        server {
           	listen 127.0.0.1:80
            
            # /경로로 들어온 http 트래픽은 http://172.30.1.16:8082로 라우팅
            location / {
                proxy_pass http://172.30.1.16:8082
            }
            
            # 정적 컨텐츠 처리에 대한 요청으로
            # /images/abc.jpg 경로에 대한 정적 컨테츠 처리는 /data/images/abc.jpg을 참조한다. 
            location /images/ {
                root /data
            }
        } 
    
    	# virtual server2
        server {
            # configuration of HTTP virtual server 2
        }
    }
    
    stream {
        # Configuration specific to TCP/UDP and affecting all virtual servers
        server {
            # configuration of TCP virtual server 1 
        }
    }

     

     

     

     

    반응형

    댓글

Designed by Tistory.