Nginx 학습 노트 - day 01

11644 단어 nginx
글 목록
  • nginx 의 모듈
  • 구조 별 분류
  • 기능 별 분류
  • 작업 원리
  • 프로 세 스 모델
  • master 프로 세 스
  • worker 프로 세 스
  • Nginx+FastCGI
  • FastCGI
  • 가 무엇 입 니까?
  • 운행 원리
  • spawn - fcgi 와 pp - fpm
  • Nginx+php-fpm
  • 프로필
  • nginx 의 다 중 프로 세 스 IO 모델
  • 장점
  • nginx 의 비동기 비 차단
  • nginx 의 이벤트 모델
  • epoll 의 장점
  • nginx 의 최적화
  • nginx 컴 파일 후 파일 크기 줄 이기
  • 특정 CPU 에 지정 한 CPU 형식 컴 파일
  • TCMalloc 를 이용 하여 nginx 최적화
  • nginx 의 커 널 매개 변수 최적화
  • nginx 에 대한 php - fpm 최적화
  • ngix. conf 최적화
  • nginx 모듈
    구조 별로 분류 하 다
        : HTTP  , EVENT  , MAIL  
    
        : HTTP Access  , HTTP FastCGI  , HTTP Proxy  , Http Rewrite  
    
         : HTTP Upstream Request Hash  , Notice  , HTTP Access Key  
    

    기능 별 분류
    Handlers(     ):       ,           headers     ,        
    
    Filters(     ):                        ,    nginx  
    
    Proxies(    ):     nginx http upstream     ,          (FastCGI)     ,              。
    

    작업 원리
    -       HTTP   , nginx                     location
    -  location                       ,         Nginx        
    -     location         handler     filter  
    - handler        ,          ,  filter           
    

    프로 세 스 모델
    -       ,                  
    	-  worker    ,      ,     worker  , worker       
    	-  worker     ,   worker        
    
    - nginx          ,     ,     master     worker  
    

    마스터 프로 세 스
    -       worker  
    	-          
    	-   worker      
    	-   worker       
    	-  worker       ,       worker  
    
    - master                 ,          
    -           ,         
    -      worker         ,     ,       ,            
    

    worker 프로 세 스
    -        ,  worker    
    -   worker           ,             
    

    Nginx+FastCGI
    FastCGI 가 뭐야?
    -         ,     HTTP server             
            HTTP server   FastCGI,   Apache, Nginx, lighttpd 
    
    - FastCGI  C/S  ,    HTTP             
                                
       HTTP            ,          FastCGI   ,         
           HTTP            ,                Client
    

    운행 원리
    -     CGI  ,      FastCGI wrapper,       
    - wrapper   .sock      
    -  nginx CGI     socket   , wrapper     ,   fork      , 
                          ,         
    -      FastCGI  ,   sock  nginx
    -              
    

    spawn - fcgi 와 pp - fpm
    -        php FastCGI     
    - HTTPServer      ,             
    - spawn-fcgi
    	- spawn-fcgi http   lighttpd    ,         ,    lighttpd    
    	-          ,        ,       FastCGI   
    	-     ,   crontab      
    - php-fpm
    	-   php    ,       php      ,       
    	-      ,         FastCGI(:-D)
    	- cpu         spawn-fcgi ,     
    

    Nginx+php-fpm
    -  php5.3.3 ,      php-fpm,         
    -      ,    -enable-fpm       php-fpm
    -   web      ,  php            ,         "REQIEST_URI"    
    

    프로필
    -      ,         [http] -> [server] -> [location]
    -             ,                      
    
    """        """
    
    server {
        listen 80;
        server_name exp.com;
        root /xx;
        """
        index       location ,      
             server ,       
        """
        index index.html index.htm index.php;
      
        location / {
        	"""
        	1.     try_files     if
        	2.       
        		1.       http://www.exp.com/a  ,    $uri    /a
        		2.        
        		3.        a    。     $uri/,      /,          a    
        		4.        ,    http://www.exp.com/index.php
        	"""
            try_files $uri $uri/ /index.php;
        }
    
        location ~ \.php$ {
            try_files $uri = 400;
            """
                fastcgi.conf  ,   fastcgi_params      
            fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
            """
            include fastcgi.conf;
            """
               
            fastcgi_pass unix:/xx/xx/xx/xx.sock
            """
            fastcgi_pass 127.0.0.1:9000; #     fastcgi_pass unix:/xx/xx/xx/xx.sock
        }
    }
    

    nginx 의 다 중 프로 세 스 IO 모델
    장점.
    -          ,     
    -     ,     
    -       ,     
    

    nginx 의 비동기 비 차단
    -      -->      -->      -->      -->     
    -        ,  io     , cpu        ,          io,        
    -   cpu        
    

    nginx 이벤트 모델
    이벤트 모델
    묘사 하 다.
    select
    표준 방법 은 컴 파일 할 때 기본 으로 선택 한 방법 입 니 다. - with - select 를 사용 할 수 있 습 니 다.module 와 -- without - selectmodule 에서 사용 하거나 사용 하지 않 습 니 다.
    poll
    표준 방법, 설정 매개 변수 -- with - poll 사용 가능module 와 -- without - pollmodule 에서 이 모듈 을 사용 하거나 사용 하지 않 습 니 다.
    kqueue
    효율 적 인 방법 은 FreeBSD 4.1 +, OpenBSD 2.9 +, MacOS X 와 더 블 프로 세 서 를 사용 하 는 MacOS X 시스템 에서 사용 하면 커 널 붕 괴 를 초래 할 수 있 습 니 다.
    epoll
    Liux 에 게 있어 서 그것 만 이 효율 적 인 방법 이다.
    epoll 의 장점
        worker    cpu   ,    worker ,          cpu   ,              
    nginx           ,    cpu        ,                   
                  cache   ,         nginx     
    nginx  4          ,   4        int ,     ,    cpu     
    

    nginx 의 최적화
    nginx 컴 파일 후 파일 크기 줄 이기
    """
      nginx    debug    ,       
            ,   debug  
    """
    
    #          auto/cc/gcc   ,          ,     debug  
    
    # debug
    CFLAGS="$CFLAGS -g"
    

    특정 CPU 에 지정 한 CPU 형식 컴 파일
    """
       Nginx ,   GCC     “-O”,   GCC  ,          
    1. --with-cc-opt='-O3'
    2. --with-cpu-opt=CPU #     CPU   ,       :
    	pentium, pentiumpro, pentium3, # pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64 
    """
    
    #    cpu  ,           
    cat /proc/cpuinfo | grep "model name"
    

    TCMalloc 를 이용 하여 nginx 최적화
    TCMalloc                ,                       ,          
    

    nginx 의 커 널 매개 변수 최적화
    #          /etc/sysctl.conf  
    net.ipv4.tcp_max_tw_buckets = 6000  # timewait     
    net.ipv4.ip_local_port_range = 1024 65000  #     
    net.ipv4.tcp_tw_recycle = 1 #         timewait    
    net.ipv4.tcp_tw_reuse = 1 #           ,    TIME-WAIT sockets      TCP  
    net.ipv4.tcp_syncookies = 1 #    SYN       ,  cookies    
    net.core.somaxconn = 262144 
    net.core.netdev_max_backlog = 262144 
    net.ipv4.tcp_max_orphans = 262144 
    net.ipv4.tcp_max_syn_backlog = 262144 
    net.ipv4.tcp_synack_retries = 1 #           SYN+ACK    
    net.ipv4.tcp_syn_retries = 1 #              SYN    
    net.ipv4.tcp_fin_timeout = 1 
    net.ipv4.tcp_keepalive_time = 30 #    keepalive   , TCP  keepalive     ,     
    
    #   
    /sbin/sysctl -p
    

    nginx 에 대한 php - fpm 최적화
  • FastCGI 프로 세 스 수 증가
      4G       ,  FastCGI       200,          
    
  • PHP - FPM 파일 설명자 열기 제한 추가
         php-fpm.conf
          “1024”   1024  4096   
    
                      ,        
        /etc/security/limits.conf   
      hard nofile 65535
      soft nofile 65535
    
  • max 적당히 증가requests
         max_requests     children               ,       500
        500 
    


  • nginx. conf 최적화
    #    8 cpu
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000
    
    #   epoll  
    use epoll
    
    #             
    work_connects 65535
    
    #      ,        
    client_header_buffer_size 16k
    large_client_header_buffers 4 32k
    
    #   gzip
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-JavaScript text/css
    
    application/xml;
    gzip_vary on;
    
    #       :
    location ~* ^.+\.(swf|gif|png|jpg|js|css)$ {
    root /usr/local/ku6/ktv/show.ku6.com/;
    expires 1m;
    

    좋은 웹페이지 즐겨찾기