Nginx 연구 기록

19978 단어 nginx
Nginx (engine x 와 발음) 는 경량급 웹 서버 / 역방향 프 록 시 및 이메일 (IMAP / POP 3) 프 록 시 서버 로 BSD - like 프로 토 콜 에서 발행 된다.러시아의 프로그래머 Igor Sysoev 가 개발 한 것 으로 러시아 대형 입구 사이트 와 검색 엔진 Rambler (러시아어:Рамблер)사용  그 특징 은 메모리 가 적 고 동시 다발 능력 이 강하 다 는 것 이다. 사실은 nginx 의 동시 다발 능력 은 같은 유형의 웹 서버 에서 비교적 좋 은 모습 을 보 였 다. 현재 중국 대륙 에서 nginx 사 이 트 를 사용 하 는 사용 자 는 시 나 닷 컴, 왕 이, 텐 센트 가 있 고 유명한 마이크로 사이트 Plurk 도 nginx 를 사용 하고 있다.
                                                                                                                                   ----'개원 중국 지역사회' 에서 발췌
다음은 설치 부터 설정 까지 의 전체 과정 이 며, 그 중의 일부 매개 변 수 를 간략하게 설명 한다.
1. 다운로드 설치
       http://nginx.org/en/download.html       nginx-1.1.17.tar.gz。
     nginx-1.1.17
# tar xvfz nginx-1.1.17.tar.gz

# cd nginx-1.1.17
          configure  ,        makefile   ,           
#./configure --prefix=/usr/local/nginx --with-http_gzip_static_module [--with-debug] [--with-http_image_filter_module]

# make

# sudo make install
     ,  /usr/local  ,  nginx   owner grouper,              ,               nginx, :
# groupadd  -g  100  nginx

# useradd   -u  100  -g  100  nginx

현재 사용자 와 사용자 그룹 을 직접 사용 하거나
# sudo chown {owner}:{group} nginx –R

이로써 설치 과정 은 거의 끝났다.
2. squid 설정
2.1 기본 설정
#    

#  user

#user  nobody; 

#  worker   ,    cpu    

worker_processes  8;

#  log             (debug|info|notice|warn|error),       

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid    ,       

#pid        logs/nginx.pid;



#    

events {

    #     I/O  ,Linux      epoll  ,FreeBSD      kqueue  

    use epoll;

    #            

    worker_connections  51200;

}   

2.2 프 록 시 설정:
http {

    include       mime.types;

  default_type  application/octet-stream;

  #        

  #charset gb2312;

  # servername      

  server_names_hash_bucket_size 128;

  #      buffer  

  client_header_buffer_size 32k;

  #    buffer    header ,         buffer     

  large_client_header_buffers  4 32k;

  #log    

  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

  #log          

  access_log  logs/access.log  main;

  # sendfile()    /   

  sendfile        on;

  #  /  FreeBSD  TCP_NOPUSH  Linux TCP_CORK。   sendfile        

  tcp_nopush     on;

  #keep-alive        ,      ,             

  #keepalive_timeout  0;

  keepalive_timeout  65;

  #  /  socket TCP_NODELAY  

  tcp_nodelay on;

  

  #gzip  

  gzip  on;

  #            ,     ,      ,      。       http     “Content-Length”   。

  gzip_min_length  1k;

  #  gzip     

  gzip_buffers  4  16k;

  #  gzip     ,   9   。1        ,9        。

  gzip_comp_level  2;

  #  “text/html”   MIME      ,“text/html”      。

  gzip_ types text/plain application/x-javascript text/css application/xml;

  #     “Vary: Accept-Encoding”,  ,    bug   IE 4-6      。

  gzip_vary  on;

  #server  

  server {

        #  DNS,      

     resolver 8.8.8.8;

     resolver_timeout 5s;

        #      

       listen       8080;

     #location  

     # jpg     

     location ~ .*\.(jpeg|jpg)$ {    

          proxy_set_header Host $http_host;

        proxy_set_header X-Real_IP $remote_addr;

         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

         proxy_pass http://backserver;

         image_filter resize 320 -;

         image_filter_jpeg_quality 20;

         #error_page      502  = @fallback;

      }

      location / {

       #  http   host

          proxy_set_header Host $http_host;

           #        ip

          proxy_set_header X-Real_IP $remote_addr;

            #  x-forward

          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            #     !     url     

          proxy_pass $scheme://$http_host$request_uri;

            #      ,  I/O  

          proxy_buffers 256 4k;

            #      

          proxy_max_temp_file_size 0;

            #          

          proxy_connect_timeout 30;

               cache     

          proxy_cache_valid 200 302 10m;

          proxy_cache_valid 301 1h;

          proxy_cache_valid any 1m;

    }

  }

}

2.3 역방향 에이전트 및 부하 균형 설정:
http {

    include       mime.types;

default_type  application/octet-stream;

# servername      

server_names_hash_bucket_size 128;

#      buffer  

client_header_buffer_size 32k;

#    buffer    header ,         buffer     

large_client_header_buffers  4 32k;

#log    

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '$status $body_bytes_sent "$http_referer" '

                      '"$http_user_agent" "$http_x_forwarded_for"';

#log          

access_log  logs/access.log  main;

#      

include    proxy.conf;

#fastcgi  

include    fastcgi.conf;

# sendfile()    /   

sendfile        on;

#  /  FreeBSD  TCP_NOPUSH  Linux TCP_CORK。   sendfile        

tcp_nopush     on;

#          IP,      

upstream backServer{

        server 192.168.0.2:8000  weight=2 max_fails=2 fails_timeout=30s;

        server 192.168.0.3:8000  weight=3;

        server 192.168.0.4:8000  backup;

        server 192.168.0.5:8000;

server 192.168.0.6:8000  down;

}

#server  

server {

        #      

    listen       8080;

        #  ,      

        server_name   xxx.com www.yyy.com;

        #    ,         ,      

        access_log  logs/access.log  main;

        #location  

        #    ,nginx    

        location ~^(images|javascript|js|css|flash|media|static)/ {

            #         

            root /var/www/…/;

            #      

            expires 30d;

        }

        #        webServer,     fastcgi    :       webServer,fastcgi   fastcgi    ,     ;

        location / {

            #       IP   ,             

            proxy_pass  http://127.0.0.1:8090;

            #    ,     upstream    

            #proxy_pass  http://backServer;

        }

}

}

2.4 hash url 을 통 해 부하 균형 설정:
제3자 모듈 ngx http upstream hash module 을 설치 해 야 합 니 다.
cd nginx-1.1.17

patch -p0 < /path/nginx.patch

./configure     

--add-module=path/

make; sudo make install

설정 파일 의 upstream 에 추가
hash $request_uri;   #$http host, $http host $request uri 등 hash 다른 필드 도 가능 합 니 다.
다른:
백 엔 드 의 한 squid 서버 가 지연 되면 예비 서버 로 지정 하거나 백업 squid 서버 를 hash 처리 할 수 있 습 니 다.
upstream backup {

        server 10.108.76.61:3128;

    server 10.108.76.62:3128;

        hash $http_host;

}

location / {

#   502     

error_page      502  = @fallback;

}



location @fallback {

        proxy_pass http://backup;

}

 
앞 에 포 함 된 파일
fastcgi.conf
# fastcgi.conf  
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;  
fastcgi_param  QUERY_STRING       $query_string;  
fastcgi_param  REQUEST_METHOD     $request_method;  
fastcgi_param  CONTENT_TYPE       $content_type;  
fastcgi_param  CONTENT_LENGTH     $content_length;  
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;  
fastcgi_param  REQUEST_URI        $request_uri;  
fastcgi_param  DOCUMENT_URI       $document_uri;  
fastcgi_param  DOCUMENT_ROOT      $document_root;  
fastcgi_param  SERVER_PROTOCOL    $server_protocol;  
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;  
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;  
fastcgi_param  REMOTE_ADDR        $remote_addr;  
fastcgi_param  REMOTE_PORT        $remote_port;  
fastcgi_param  SERVER_ADDR        $server_addr;  
fastcgi_param  SERVER_PORT        $server_port;  
fastcgi_param  SERVER_NAME        $server_name;  
 
fastcgi_index  index.php; 
 
# PHP only, required if PHP was built with --enable-force-cgi-redirect  
fastcgi_param  REDIRECT_STATUS    200;
proxy.conf
# proxy.conf  
proxy_redirect          off;  
proxy_set_header        Host            $host;  
proxy_set_header        X-Real-IP       $remote_addr;  
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;  
client_max_body_size    10m;  
client_body_buffer_size  128k;  
proxy_connect_timeout   90;  
proxy_send_timeout      90;  
proxy_read_timeout      90;  
proxy_buffers           32 4k; 
mine.types
# mime.types   

types {   

    text/html                             html htm shtml;   

    text/css                              css;   

    text/xml                              xml rss;   

    image/gif                             gif;   

    image/jpeg                            jpeg jpg;   

    application/x-javascript              js;   

    text/plain                            txt;   

    text/x-component                      htc;   

    text/mathml                           mml;   

    image/png                             png;   

    image/x-icon                          ico;   

    image/x-jng                           jng;   

    image/vnd.wap.wbmp                    wbmp;   

    application/java-archive              jar war ear;   

    application/mac-binhex40              hqx;   

    application/pdf                       pdf;   

    application/x-cocoa                   cco;   

    application/x-java-archive-diff       jardiff;   

    application/x-java-jnlp-file          jnlp;   

    application/x-makeself                run;   

    application/x-perl                    pl pm;   

    application/x-pilot                   prc pdb;   

    application/x-rar-compressed          rar;   

    application/x-redhat-package-manager  rpm;   

    application/x-sea                     sea;   

    application/x-shockwave-flash         swf;   

    application/x-stuffit                 sit;   

    application/x-tcl                     tcl tk;   

    application/x-x509-ca-cert            der pem crt;   

    application/x-xpinstall               xpi;   

    application/zip                       zip;   

    application/octet-stream              deb;   

    application/octet-stream              bin exe dll;   

    application/octet-stream              dmg;   

    application/octet-stream              eot;   

    application/octet-stream              iso img;   

    application/octet-stream              msi msp msm;   

    audio/mpeg                            mp3;   

    audio/x-realaudio                     ra;   

    video/mpeg                            mpeg mpg;   

    video/quicktime                       mov;   

    video/x-flv                           flv;   

    video/x-msvideo                       avi;   

    video/x-ms-wmv                        wmv;   

    video/x-ms-asf                        asx asf;   

    video/x-mng                           mng;   

}

 

좋은 웹페이지 즐겨찾기