nginx 프로필 과 유 니 버 설 설정

9206 단어
nginx 프로필 과 유 니 버 설 설정
간단 한 소개
nginx 는 웹 서버 로 C 언어 로 개발 되 었 습 니 다. 이벤트 구동 을 바탕 으로 백만 단계 의 tcp 연결 을 처리 할 수 있 습 니 다. 고도 로 모듈 화 된 디자인 과 자유로운 허가증 으로 기능 을 확장 하 는 모듈 이 끊임없이 등장 하고 플랫폼 을 뛰 어 넘 으 며 현재 운영 체제 특유 의 효율 적 인 API 를 사용 하여 자신의 성능 을 향상 시 킬 수 있 습 니 다. nginx 는 성능 을 왕 으로 합 니 다.nginx 를 선택 한 핵심 이 유 는 높 은 병행 요 구 를 처리 하 는 동시에 효율 적 인 서 비 스 를 유지 하 는 것 이다.
장점.
  • 더 빨리
  • 한 번 의 요청 이 빠 르 고 절정 기 도 빠르다.
  • 높 은 확장 성
  • 매우 확장 성 이 있 습 니 다. 이 는 여러 개의 서로 다른 기능, 서로 다른 차원, 서로 다른 유형 과 결합 도가 매우 높 은 모듈 로 구성 되 어 있 습 니 다. 이런 저 결합 디자인 은 방대 한 제3자 모듈 을 만 들 었 습 니 다.
  • 높 은 신뢰성
  • 모든 워 커 프로 세 스 가 상대 적 으로 독립 되 어 있 습 니 다. master 프로 세 스 는 특정한 워 커 프로 세 스 가 잘못 되 었 을 때 새로운 워 커 프로 세 스 를 신속하게 끌 어 올 릴 수 있 습 니 다. nginx 의 신뢰성 은 핵심 프레임 코드 의 우수한 디자인, 모듈 디자인 의 단순 성에 서 비롯 됩 니 다.정부 에서 제공 하 는 상용 모듈 은 모두 매우 안정 적 이다.
  • 저 메모리 소모
  • 일반적으로 10000 개의 비활성 keep - alive 연결 은 2.5M 의 메모리 만 소모 합 니 다.
  • 단기 지원 10 만 이상 의 동시 접속
  • nginx 가 지원 하 는 병렬 연결 상한 선 은 메모리 에 달 려 있 습 니 다. 10 만 원 은 봉인 되 지 않 았 습 니 다.
  • 열 배치
  • 마스터 관리 프로 세 스
    작업 프로 세 스
  • 가장 자유로운 BSD 허가 협의
  • nginx 설정 은 일반적으로 6 개의 큰 블록 으로 나 뉘 는데, 대부분의 http 설정 은 server 와 location 에 설정 할 수 있 습 니 다.
    1. 전역 블록: nginx 전역 에 영향 을 주 는 명령 을 설정 합 니 다.일반적으로 nginx 서버 를 실행 하 는 사용자 그룹, nginx 프로 세 스 pid 저장 경로, 로그 저장 경로, 프로필 도입, worker process 수 생 성 등 이 있 습 니 다.
    2. 이벤트 블록: nginx 서버 에 영향 을 주거 나 사용자 와 의 네트워크 연결 을 설정 합 니 다.모든 프로 세 스 의 최대 연결 수가 있 습 니 다. 어떤 이벤트 구동 모델 을 선택 하여 연결 요 구 를 처리 하 는 지, 여러 개의 네트워크 연결 을 동시에 받 아들 이 고 여러 개의 네트워크 연결 을 직렬 화 할 수 있 는 지 여부 등 이 있 습 니 다.
    3. http 블록: 여러 개의 server, 프 록 시, 캐 시, 로그 정의 등 절대 다수의 기능 과 제3자 모듈 의 설정 을 포함 할 수 있 습 니 다.파일 도입, mime - type 정의, 로그 사용자 정의, sendfile 전송 파일 사용 여부, 연결 시간 초과, 단일 연결 요청 수 등.
    4. upstream: 프 록 시 서 비 스 를 설정 하고 http 모듈 에서 server 단 을 통 해 호출 합 니 다.
    5. server 블록: 가상 호스트 의 관련 매개 변 수 를 설정 합 니 다. http 에 여러 개의 server 가 있 을 수 있 습 니 다.
    6. location 블록: 요청 한 경로 와 각종 페이지 의 처리 상황 을 설정 합 니 다.
    다음은 일반적인 nginx 설정 입 니 다.
    # nginx        
    user  www www;
    # worker          ,             cpu   grep ^processor /proc/cpuinfo | wc -l,  auto 
    worker_processes  auto;
    #             ,          [ debug | info | notice | warn | error | crit ]    
    error_log   logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    #    pid      
    pid         logs/nginx.pid;
    
    
    events {
        # nginx    epoll    ,: use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];       http://wiki.codemongers.com/    
        use epoll;
        #    worker       (  )      (                      )
        worker_connections  2048;
        #                   。    off
        # multi_accept on; 
        #                            ,on        ,   off
        # accept_mutex on; 
    }
    
    http {
        #              ,  mime  ,   mime.type    
        include               mime.types;
        #      mime  
        default_type          application/octet-stream;
        #        
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
        #           
        #access_log  logs/access.log  main;
        #           ,         on,             IO     ,    off
        sendfile             on;
        # socket            
        # tcp_nopush         on;
        #   socket       0.2      ,tcp_nopush     tcp_nodelay "  "
        # tcp_nodelay        on;
        #        ,    
        keepalive_timeout   65;
        # 【gzip      】:gzip gzip_static        ,      ,gzip  ,gzip_static      ,   :http,server,location,    nginx -V            
        #     gzip,   off,         ,        
        # gzip                  on;
        #      gzip_static,   off,           .gz    ,      ,   ,     ,      
        gzip_static             on;
        #               gzip    , K   ,   0 ,         。        
        gzip_min_length         3k;
        #   (          ?     ?),32 4K| 16 8K,     
        # gzip_buffers          4 16k;
        #      http    (     ,      1.1  ),1.0|1.1,  1.1,       ,    1.0
        gzip_http_version       1.0;
        #           ,       ,off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any,   :off
        # gzip_proxied          any
        #   6     (    ,    ,   CPU    )
        gzip_comp_level         6;
        #              txt,xml,html ,css
        # gzip_types                text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
        #      ”Vary: Accept-Encoding”
        gzip_vary               on;
    
        # 【http_proxy   】    :http,server,location
        #         ,         ,  413  。  1m
        client_max_body_size           30m;
        #         Buffer  ,       client_body_buffer_size            。        client_body_buffer_size  client_max_body_size,              ,       client_body_temp
        client_body_buffer_size       128k;
        #           ,  /tmp ,      nginx      
        # client_body_temp          /tmp
        #             ,   
        proxy_connect_timeout       75;
        #               ,   
        proxy_read_timeout           75;
        #              ,   
        proxy_send_timeout           75;
        #              
        proxy_intercept_errors      on;
        #               body  , on|off,   on
        # proxy_buffering           on
        # Nginx       read_buf,       upstream header     ,            ,Nginx  upstream sent too big header  ,  client    502。   :proxy_buffer_size 4k/8k
        proxy_buffer_size           4k;
        #              body    buffer     buffer  。  4    32k   read_buf    body,               4 ,     buf     body        ,    4 buf;    :proxy_buffers 256 8k
        proxy_buffers               4 32k;
        # nginx                       ,         busy   buffer           (   proxy_buffers       2 ),           。proxy_busy_buffer_size        busy   buffer   。          busy_buffer  ,        ,       ;           busy_buffer  ,   busy_buffer ,       ;
        proxy_busy_buffers_size       64k;
        #           ,   :proxy_max_temp_file_size 1024m;
        proxy_max_temp_file_size
        #                 。     8k  16k。
        proxy_temp_file_write_size  64k;
        #   proxy                。  :proxy_temp_path  path [level1 level2 level3],   proxy_temp_path proxy_temp
        # proxy_temp_path               /usr/local/nginx/proxy_temp 1 2;
      
        #              ,service:          ,weight:  ,max_fails:              ,  ,fail_timeout:         ,backup:    ,max_conns:       ,slow_start:     ,     ,down:     server       .
        upstream  backend  { 
                  #          ,ip_hash;|fair;|hash $request_uri; hash_method crc32;  ,         (weight)
                  ip_hash; 
                  #       ip、         
                  server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
                  server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
                  #             
                  # keepalive 16;
        }
      
        # 【      】      include /etc/nginx/sites-enabled/*;       
        server {
            #   80  
            listen           80;
            #        
            server_name      host.example.com;
            #         
            root                /var/www/html/oaapp;
            #       
            charset         utf-8;
            #             
            access_log      /tmp/host.access.log  main;
            #             
            error_log       /tmp/host.error.log error;
            
            #  /proxy        +    
            location /proxy{
                #         
                root                   /var/www/html/oaapp;
                #     
                index                 index index.php index.jsp index.html index.htm;
                #     backend        ,     
                proxy_pass            http://backend;  
                #   :proxy_redirect [ default|off|redirect replacement ]    :proxy_redirect default     :http, server, location
                # proxy_redirect         off;
                #    Web       X-Forwarded-For      IP
                proxy_set_header      Host  $host:$server_port;
                proxy_set_header      X-Real-IP  $remote_addr;  
                proxy_set_header      X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            }
            
            #  .php       php-fpm
            location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        
        
                fastcgi_intercept_errors on;
                fastcgi_buffer_size 16k;
                fastcgi_buffers 4 16k;
                fastcgi_connect_timeout 300;
                fastcgi_send_timeout 300;
                fastcgi_read_timeout 300;
            }
    
            
            location ~ /\.ht {
                deny all;
            }
            #   404        ,            url
            error_page   404  /404.html;
            location = /404.html {
                access_log logs/access.log maintry;
                proxy_pass http://192.168.10.100:8080/error404.php;
            }
            #   50x        ,            url
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root           /var/www/html;
            }
        }
    }
    

    좋은 웹페이지 즐겨찾기