Nginx 프로필, 설치 및 프로필 상세 설명

11236 단어
1. Nginx 안내    Nginx 는 소스 코드 의 고성능 HTTP 서버 와 역방향 프 록 시 서버 로 IMAP / POP 3 / SMTP / TCP (1.9 이상 버 전) 프 록 시 서 비 스 를 지원 합 니 다.
1.1. Nginx 작업 원리       Nginx 는 커 널 과 모듈 로 구성 되 어 있 으 며, 설정 파일 을 찾 아 클 라 이언 트 요청 을 location block (location 은 URL 에 맞 는 명령) 에 표시 하 는 작업 을 수행 합 니 다. location 설정 명령 은 서로 다른 모듈 을 시작 하여 작업 을 수행 합 니 다.
       Nginx 모듈 은 핵심 모듈, 기초 모듈 과 제3자 모듈 로 나 뉜 다.
           핵심 모듈: HTTP 모듈, EVENT 모듈 (이벤트), MAIL 모듈.
           기본 모듈: HTTP Access 모듈, HTTP FastCGI 모듈, HTTP Proxy 모듈, HTTP Rewrite 모듈.
           제3자 모듈: HTTP Upstream Request Hash 모듈, Notice 모듈, HTTP Access Key 모듈.
   
1.2. 성능 우위       웹 서버, 정적 파일, 색인 파일 및 자동 색인 처리 효율 이 높 습 니 다.
       프 록 시 서버, 빠 르 고 효율 적 인 역방향 프 록 시, 사이트 성능 향상.
       부하 이퀄 라이저 는 내부 적 으로 레일 스 와 PHP 를 지원 하고 HTTP 프 록 시 서버 도 지원 하 며 대외 적 으로 서 비 스 를 할 수 있 습 니 다.간단 한 잘못 사용 과 알고리즘 을 이용 하여 부하 균형 을 맞 추 는 것 도 지원 합 니 다.
       성능 측면 에서 Nginx 는 전문 적 으로 성능 디자인 을 위해 효율 을 중시한다.Poll 모델 을 사용 하면 더 많은 병렬 연결 을 지원 하고 큰 병렬 시 낮은 메모 리 를 사용 할 수 있 습 니 다.
       안정성 측면 에서 단계별 자원 배분 기술 을 사용 하여 CPU 자원 의 점용 률 을 낮 춘 다.
       높 은 가용성 측면 에서 열 비 를 지원 하고 빠르게 작 동 합 니 다.
2. Nginx 컴 파일 설치
2.1. Nginx 설치
#    nginx            
#     http_rewrite_module(         ) pcre 
#     http_gzip_module(gzip  ) zlib 
#  http_ssl_module(HTTPS/SLL) openssl 
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
#  nginx   ,   
wget http://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
#           《Nginx    》
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module 
#      
make && make install

3. Nginx 프로필 (/ usr / local / nginx / conf / nginx. conf)     설정 파일 은 주로 네 부분 으로 구성 되 어 있 습 니 다. main (전역 설정), server (호스트 설정), upstream (부하 균형 서버 설정), location (URL 이 특정 위치 설정 과 일치 합 니 다).
3.1 전역 변수
#Nginx worker           
#user  nobody nobody;
#Nginx      
worker_processes  1;
#worker_processes auto;
#         cpu       ,          。        , 0 1      .
#      1-4            ,   5           。eg:
#worker_processes 4     #4 CPU 
#worker_cpu_affinity 0001 0010 0100 1000


#            ,[debug|info|notice|warn|crit]
#error_log  logs/error.log  info;
#    ID      
#pid        logs/nginx.pid;
#  nginx              ,             (ulimit -n) nginx     ,  nginx           ,     ulimit -n      。
#vim /etc/security/limits.conf
#  *                soft    nproc          65535
#  *                hard    nproc          65535
#  *                soft    nofile         65535
#  *                hard    nofile         65535
worker_rlimit_nofile 65535;

3.2 이벤트 설정
events {
    #use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll   Linux 2.6             I/O  ,    FreeBSD  ,  kqueue  。
    use epoll;
    #              ,     nginx          worker_processes*worker_connections。   :worker_rlimit_nofile/worker_processes
    #  :            socket     (~ 64K),               
    worker_connections  65535;    
    #worker    :  (        ,         ,        )
    #multi_accept on; 
}

3. http 매개 변수   
#             
    include mime.types;
    #      
    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"';
    #       。          。
    #1.$remote_addr  $http_x_forwarded_for         ip  ;
    #2.$remote_user :           ;
    #3.$time_local :           ;
    #4.$request  :       url http  ;
    #5.$status :        ; 
    #6.$body_bytes_sent :                ;
    #7.$http_referer :                ;
    #8.$http_user_agent :             
    #       ,           。
    #access_log  logs/access.log  main;
    #            ,  IO  
    error_log logs/error.log crit;
    #    
    #access_log  off;


    #    
    #charset utf-8;
    #      hash   
    server_names_hash_bucket_size 128;
    #               
    client_max_body_size 8m;
    #           hearerbuffer  
    client_header_buffer_size 32k;
    #                        。
    large_client_header_buffers 4 64k;
    #        。
    sendfile        on;
    #      
    tcp_nopush on;
    tcp_nodelay on;    
    #         ,    
    keepalive_timeout 60;
    #            
    client_header_timeout 10;
    #               
    client_body_timeout 10;
    #         
    send_timeout 10;


#FastCGI              :      ,      。
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;


#gzip    
    #  gzip    
    gzip on; 
    #        
    gzip_min_length 1k; 
    #     
    gzip_buffers 4 16k;
    #    (  1.1,     squid2.5   1.0)
    gzip_http_version 1.0;
    #     1-9     ,      ,    , CPU   
    gzip_comp_level 2;
    #    ,       text/html,          ,         ,      warn。
    gzip_types text/plain application/x-javascript text/css application/xml;
    #                
    gzip_vary on;

3.4 가상 호스트 기본 설정
#      
    server {
        #    
        listen       80;
        #    
        server_name  localhost;
        #    ,         ,      
        #charset koi8-r;
        #          
        #access_log  logs/host.access.log  main;
        # URL    
        location / {
            #    ,         
            root   html;
            #    。       
            index  index.html index.htm;
        }


#        
        #error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }


#  URL .php        127.0.0.1
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
#php         FastCGI  
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}


#    .ht   ( ngx_http_access_module  )
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
#HTTPS      
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

3. 5 Nightx 상태 모니터링
#Nginx    ,StubStatus    Nginx        (          )
        #location /NginxStatus {
        #    #  StubStatus           
        #    stub_status    on;
        #    #  StubStaus         
        #    access_log    logs/Nginxstatus.log;
        #    #Nginx    ( Apache htpasswd    )
        #    #auth_basic    "NginxStatus";
        #    #         
        #    #auth_basic_user_file    ../htpasswd;    
        #}
  :http://IP/NginxStatus(           ) 

3. 6 역방향 에이전트
#       HTTP      

#nginx            (      )
proxy_connect_timeout      5;
#           (      )
proxy_send_timeout         5;
#     ,         (      )
proxy_read_timeout         60;
#       (nginx)             
proxy_buffer_size          16k;
#proxy_buffers   ,     32k    ,    
proxy_buffers              4 32k;
#        (proxy_buffers*2)
proxy_busy_buffers_size    64k;
#         ,     ,  upstream    
proxy_temp_file_write_size 64k;
#        
proxy_cache_path /data/proxy/cache levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=1g;
#levels=1:2       ,      1   , 2  2   
#keys_zone:  web             
#inactive:          。
#max_size:          。
#             (             )
proxy_temp_path /data/proxy/temp
#    
server {
    #   80  
    listen       80;
    server_name  localhost;
    location / {
        #          (proxy_cache zone|off,         )
        proxy_cache cache_one;
        #             
        proxy_cache_valid 200 304 12h;
        #               
        proxy_cache_key $host$uri$is_args$args;
        # 7  Web       X-Forwarded-For      IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
        #    
        proxy_pass   http://IP; 
        #        
        expires    1d;
    }
    #        (            ngx_cache_purge)
    #http://www.123.com/2017/0316/17.html  
    #http://www.123.com/purge/2017/0316/17.html  URL  
    location ~ /purge(/.*) {
        allow    127.0.0.1;
        deny    all;
        proxy_cache_purge    cache_one    $host$1$is_args$args;
    }
    #      .jsp、.php、.jspx             
    location ~.*\.(jsp|php|jspx)?$ { 
        proxy_set_header Host $host; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   
        proxy_pass http://http://IP;
    }

3.7 부하 균형
#        
upstream my_server_pool {
    #    
    #1.  (  )(weight    )
    #2.ip_hash:        IP hash    。(    )
    #3.fair:               。(upstream_fair  )
    #4.url_hash:     url hash    。( hash   )
    #  :
    #down:         
    #backup:     
    #max_fails:          
    #fail_timeout:           。
    server 192.168.1.109:80 weight=1 max_fails=2 fail_timeout=30;
    server 192.168.1.108:80 weight=2 max_fails=2 fail_timeout=30;
}
#      
server {
    ...
    location / {
    proxy_pass http://my_server_pool;
    }
}

3. 8 URL 재 작성
#        URL  
if($http_user_agent ~ Firefox){
rewrite ^(.*)$  /firefox/$1 break; 
}
if($http_user_agent ~ MSIE){
rewrite ^(.*)$  /msie/$1 break; 
}


#      
location / {
    rewrite ^/(.*)$ https://web8.example.com$1 permanent;
}

3. 9 IP 제한
 #  IP  
location / {
    deny 192.168.0.2;
    allow 192.168.0.0/24;
    allow 192.168.1.1;
    deny all;
}

3.10 Nginx 관련 명령
#  nginx
nginx 
#  nginx
nginx -s stop
#    
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

다음으로 전송:http://blog.csdn.net/hzsunshine/article/details/63687054

좋은 웹페이지 즐겨찾기