Linux Nginx

15456 단어 linux nginx

  
nginx
1: Nginx 가 뭐 예요?
많은 사람들 이 아파 치 를 잘 알 고 있 습 니 다. Nginx 는 Apahe 와 비슷 하고 모두 웹 용기 에 속 하 며 고성능 HTTP 와 역방향 프 록 시 소프트웨어 이기 도 합 니 다.
2: 왜 Nginx 를 선 택 했 습 니까?
Nginx 와 Apache 의 가장 큰 차이 점:
  • (1) Apache 처리 속도 가 매우 느 리 고 많은 메모리 자원 을 차지한다. Nginx 는 반대로 처리 속도 가 빠 르 고 자원 을 적 게 차지한다
  • (2) 아파 치 기능 의 모든 모듈 은 동적 정적 컴 파일 을 지원 하고 Nginx 는 정적 컴 파일 을 지원 합 니 다.(동적 컴 파일 가능 한 실행 파일 은 동적 링크 라 이브 러 리 를 추가 해 야 합 니 다. 실행 할 때 동적 체인 라 이브 러 리 의 명령 을 호출 해 야 합 니 다. 장점: 실행 파일 의 부 피 를 줄 이 고 컴 파일 속 도 를 가속 화 하 며 시스템 자원 을 절약 해 야 합 니 다. 단점: 간단 한 프로그램 이라도 링크 라 이브 러 리 에 있 는 한두 개의 명령 만 사용 하고 상대 적 으로 큰 링크 라 이브 러 리 를 추가 해 야 합 니 다.다른 컴퓨터 에 실행 가능 한 라 이브 러 리 가 설치 되 어 있 지 않 으 면 동적 으로 컴 파일 할 수 있 는 실행 가능 한 파일 을 실행 할 수 없습니다. 정적 컴 파일 은 컴 파일 이 실행 가능 한 파일 을 컴 파일 할 때 실행 가능 한 동적 링크 라 이브 러 리 (. so 또는. lib) 입 니 다.실행 가능 한 파일 로 연 결 된 부분 을 추출 하여 실행 가능 한 파일 이 실 행 될 때 동적 링크 라 이브 러 리 에 의존 하지 않도록 합 니 다. 따라서 장단 점 은 동적 으로 컴 파일 된 실행 가능 한 파일 과 서로 보완 되 어 있 습 니 다.
  • (3) Apache 는 FCGI 에 대한 지원 이 좋 지 않 고 Nginx 는 FCGI 에 대한 지원 이 매우 좋 습 니 다. (FCGI 는 perl 의 모듈 입 니 다. Nginx 는 외부 프로그램 을 직접 호출 할 수 없 기 때 문 입 니 다)
  • (4) 처리 링크 에서 Nginx 는 epoll 을 지원 하지만 아파 치 는 지원 하지 않 습 니 다.(epoll Nginx 의 효율 적 인 작업 모드 입 니 다. 이것 이 바로 nginx 가 높 은 병행 을 지원 하 는 이유 입 니 다. nginx 는 Apache 2 와 다른 점 은 Nginx 가 단일 스 레 드, 비 차단, 비동기 IO 작업 모델 을 사용 하 는 것 입 니 다. Apache 2 는 모든 요청 에 대해 새로운 프로 세 스 나 스 레 드 를 만 들 고 많은 메모리 와 CPU 시간 을 낭비 합 니 다. Nginx 는 운영 체제 가 제공 하 는 IO 다 중 재 활용 을 사용 합 니 다.기술 (epoll) 은 한 라인 에서 모든 요청 을 처리 합 니 다. IO 작업 이 시 작 될 때 까지 기다 리 지 않 고 다음 요청 을 처리 합 니 다. 어떤 IO 작업 이 끝 난 후에 Nginx 는 다시 고 개 를 돌려 이번 IO 의 후속 작업 을 처리 합 니 다.
  • (5) 패 키 지 를 보면 Nginx 는 백 K 밖 에 없 는데 아파 치 는 모두 M 으로 계산 하면 매우 방대 하 다
  • 3. Nginx 의 강점
  • (1) 웹 서버 로 서 Nginx 는 정적 파일 과 색인 파일 을 처리 하여 자동 검색 의 효율 이 매우 높다
  • (2) 프 록 시 서버 로 서 Nginx 는 역방향 프 록 시 가속 을 실현 할 수 있 습 니 다. 사이트 의 운행 속 도 를 높 일 수 있 습 니 다
  • (3) 부하 이퀄 라이저 를 만 들 고 Nginx 는 rails 와 phop 을 내부 적 으로 지원 할 수 있 으 며 HTTP 프 록 시 서버 의 대외 서 비 스 를 지원 할 수 있 으 며 간단 한 용 착 알고리즘 을 이용 하여 부하
  • 도 지원 한다.
  • (4) 성능 에 있어 Nginx 는 성능 최 적 화 를 위해 개 발 된 것 으로 가장 많은 링크 수 를 5 만 개 로 지원 합 니 다.
  • (5) 안정 적 인 측면 에서 CPU 가 자원 을 차지 하 는 것 이 매우 낮다. 공식 적 으로 Nginx 는 1 만 개의 활동 하지 않 은 링크 를 유지 하고 2.5M 메모 리 를 차지한다 고 밝 혔 다. 공식 적 으로 이런 상태 에서 DDOS 공격 은 완전히 무효 라 고 주장 했다.
  • (6) 고성능 측면 에서 Nginx 는 열 배 치 를 지원 하고 시동 속도 가 매우 빠 르 기 때문에 끊 임 없 는 서 비 스 를 할 수 있 는 상황 에서 소프트웨어 의 버 전 설정 이나 업 그 레이 드 는 현 망 업무 에 영향 을 주지 않 고 몇 달 동안 운행 해도 시작 할 필요 가 없 으 며 거의 7 * 24 시간 동안 중단 없 이 운행 할 수 있다
  • 4: Nginx 의 모듈 작업 원리
    Nginx 는 커 널 과 모듈 로 구성 되 어 있 으 며 커 널 디자인 이 매우 작고 간결 하 며 완 성 된 작업 도 매우 간단 합 니 다. 설정 파일 을 통 해 클 라 이언 트 요청 을 하나의 location block 에 표시 한 다음 에 이 location 의 설정 을 통 해 각 명령 을 통 해 서로 다른 모듈 을 호출 하여 해당 하 는 작업 을 완성 합 니 다. Nginx 의 모듈 부분: Nginx 의 모듈 은 구조 적 으로 나 뉜 다.    핵심 모듈 은 http 모듈, 이벤트 모듈, mail 모듈 을 포함 합 니 다.    기본 모듈 에는 http Access 모듈 Http FastCGI 모듈 Http Proxy 모델 과 HTTP Rewrite 모듈 이 포함 되 어 있 습 니 다.    제3자 모듈: Http upstream request 모듈, Notice 모듈 과 Http Access key 모듈        상기 모듈 은 기능 에서 3 개의 큰 유형 으로 나 뉜 다.    (1) Handerls (처리 모듈) 와 같은 모듈 은 직접 요청 하고 출력 내용 과 Haders 정보 조작 을 수정 합 니 다.    Handerls 프로세서 모듈 은 하나 뿐 입 니 다.    (2) Filters (필터 모듈) 는 주로 다른 처리 모듈 의 출력 내용 과 연수 수정 을 대상 으로 하고 마지막 으로 Nginx 에서 출력 합 니 다.    (3) Proxies (프 록 시 모듈), 이 모듈 Nginx 의 HTTP upstream 과 같은 모듈 은 백 엔 드 서 비 스 를 실현 합 니 다. 예 를 들 어 FastCGI 의 정보 교환, 프 록 시 서비스 와 부하 균형 을 실현 합 니 다.      HTTP 요청      |       |      \|/     Nginx 커 널      |       | Handlers 처리 모듈 선택      |       |     Handlers 모듈 을 처리 합 니 다. Filters (필터 모듈) 에 맡 깁 니 다. > HTTP 요청 에 응답 합 니 다. Nginx 는 단일 프로 세 스 와 더 블 프로 세 스 두 가지 로 나 뉘 며, Nginx 기본 작업 방식 은 단일 프로 세 스 작업 입 니 다.
    5. Nginx 의 설치 와 설정
    (1) 의존 라 이브 러 리 설치
    # yum -y install gcc openssl-devel zlib-devel
    
      pcre-delvel pcre-8.01.tar.gz
    # cd /soft/
    # tar xf pcre-8.01.tar.gz -C tmp/
    # cd tmp/pcre-8.01/
    #./configure && make && make install
    
      libmd5 libmd5-0.8.2b.tar.gz
    # cd /soft/
    #tar xf libmd5-0.8.2b.tar.gz -C tmp/
    
    (2)  Nginx 
    # useradd user_00 -g users -s /sbin/nologin 
    # cd /soft/
    # tar -xvf nginx-0.8.55.tar.gz -C tmp/
    # cd tmp/nginx-0.8.55/
    ./configure --user=user_00 --group=users --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-md5=/soft/md5/ --with-sha1=auto/lib/sha1 --with-pcre=/soft/pcre-8.01/ --without-select_module --without-poll_module --without-http_ssi_module --without-http_userid_module --without-http_geo_module --without-http_map_module --without-http_memcached_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --prefix=/usr/local/services/nginx-0.8.55
    # make >/dev/null && make install >/dev/null
          :
    --with-http_realip_module 
               IP  ,    NGINX            。
    
    -with-http_stub_status_module 
              nginx     , 
    
    --with-http_gzip_static_module 
                     Gzip                 “.gz”       ,             。
    
    --with-md5=/soft/md5/ 
      md5     
    
    --with-sha1=auto/lib/sha1 
      sha1     
    --with-pcre=/soft/pcre-8.01 
      PCRE   
    
    --without-select_module 
          。           。            -select_module   - select_module        
    
    --without-poll_module 
       poll  
    
    --without-http_ssi_module 
       ngx_http_ssi_module  ,             (ssi)   .
    
    --without-http_userid_module 
       ngx_http_userid_module  
    
    --without-http_geo_module 
              IP      ngx_http_geoip_module  ,  MaxMindGeoIP      ,       0.7.63 0.8.6    。       ,     IP         ,                        
    。
    --without-http_map_module 
       ngx_http_map_module  
    
    --without-http_memcached_module 
       ngx_http_memcached_module  
    
    --without-mail_pop3_module 
       ngx_mail_pop3_module  
    
    --without-mail_imap_module 
       ngx_mail_imap_module  
    
    --without-mail_smtp_module 
       ngx_mail_smtp_module  
    
    
    

    4.4 메 인 프로필 편집
          :/usr/local/nginx/conf/nginx.conf 
    1.	Nginx      4    
    2.	main(    )
    3.	server(    )
    4.	upstream(      )
    5.	localtion(URL         )
        server  main  location  server 
    upstream                .
    
    
    #vim /usr/local/nginx/conf/nginx.conf 
    #==================================     #========================
    user  user_00 users;  #      , Nginx Worker        ,   nobody
    worker_processes  8;  #          ,     10M~12M   ,   CPU              。
    
    
    error_log  logs/error.log; #      
    #error_log  logs/error.log  notice; 
    #error_log  logs/error.log  info;   
      
    pid        logs/nginx.pid;  #:      ID     .
    
    
    #Specifies the value for maximum file descriptors that can be opened by this process.
    #events     Nginx           
    events {
        use epoll;  #  epoll    ,   Linux,Unix  kqueue,select
        worker_connections  100000; #  Ningx          。   1024,         。
    }
    worker_rlimit_nofile 100000; #            10 
    
    #================================== 、HTTP  ========================
    http { 
        include       mime.types;  #               
        default_type  application/octet-stream; #  HTTP    ,         
        server_tokens off;   #         nginx    
    
    	#          
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
    	#     hash  128K
        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k; #             ,              1k
        large_client_header_buffers 4 32k; #          nginx    client_header_buffer_size  buffer   header 
        client_max_body_size 8m; #    nginx       
    
    	#sendfile     nginx     sendfile   (zero copy   )     ,
         #      ,    on。
    	 #             IO     ,    off,        IO    ,    uptime。
        sendfile          on;
        tcp_nopush        on; #          socke TCP_CORK   ,       sendfile     
        tcp_nodelay       on;
    
        #keepalive_timeout  0;
        keepalive_timeout 60; #keepalive    。            ,     
    
    	#===================    ============
        fastcgi_connect_timeout 300; #       FastCGI     。
        fastcgi_send_timeout 300; # FastCGI         ,               FastCGI         。
        fastcgi_read_timeout 300; #  FastCGI       ,                FastCGI       。
        fastcgi_buffer_size 254k; #    FastCGI               
        fastcgi_buffers 16 256k; #                   FastCGI   。
        fastcgi_busy_buffers_size 512k; #              ,       fastcgi_buffers   。
        fastcgi_temp_file_write_size 512k; #   fastcgi_temp_path         ,    fastcgi_buffers   。
    
        gzip              on; #          gzip  (on/off)
        gzip_min_length   1k; #              ,      header  content-length     
        gzip_buffers      4 16k; #                 gzip        
        gzip_http_version 1.0; #  http     
        gzip_comp_level   2;   #gzip   ,1           
    	#  mime      ,      ,”text/html”         
        gzip_types        text/plain application/x-javascript text/css application/xml text/javascript;
        gzip_vary         on; # http    ,  vary ,        
    
        charset      utf-8;  #    utf-8
    
        access_log   off;    #       
        log_not_found off;   #       
    
            error_page  400 403 405 408  /40x.html;  #       
            error_page  500 502 503 504  /50x.html;  #       
    	#===================Server         ============
        server {
            listen       80 default;   #        80
            server_name  _;
    	return       444;
        }
    #===================          ===========
    include vhost/vhost.www.fanhougame.com;
    
    }
    
        Server      :
        server {
            listen       80 ; #     
    		#   
            server_name  10.0.0.201;
            #        
    		root         /data/www/oa.com/www.fanhougame.com ;
    
    		# localtion          
            location / {
                index index.php index.html index.htm;
                if (!-e $request_filename) {
                    return 444;
                }
            }
    
    		#:       
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /usr/local/nginx/html;
            }
    
    		#      localtion         ,     php sock
            location ~ \.php$ {
                fastcgi_pass   unix:/tmp/php-cgi-5313-web.sock;
                fastcgi_index  index.php;
                include        fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param SERVER_NAME $http_host;
                fastcgi_ignore_client_abort on;
            }
    
    		#             max  10 ,    30d( )
            location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
                error_log    off;
                access_log   off;
    			#expires      30d;
                expires      max;
            }
        }
    4.5. 시작 과 부 드 러 운 재 부팅
    # cd /usr/local/services/nginx-0.8.55/sbin/
    # ./nginx –t            
    # ./nginx   nginx
    # ./nginx -s reload
    ####################################################################################

    6. Nginx 상용 설정 인 스 턴 스
    6.1. 부하 균형 설정 인 스 턴 스 환경:
    Master:10.0.0.201 Master Web 10.0.0.201:81 Slave1 Web 10.0.0.202:80 Slave2 Web 10.0.0.203:80
    6.2 、 201 에서 메 인 프로필 nginx. conf 편집
    # vim /usr/local/service/nginx/conf/nginx.conf
    6.3. 201 에서 가상 호스트 설정 파일 vhost. aatest. com 을 편집 합 니 다.
    # vim /usr/local/service/nginx/conf/vhost/vhost.aatest.com
    6.4 、 201 에서 부하 가 모두 설정 파일 을 편집 합 니 다.
    # vim /usr/local/service/nginx/conf/vhost/vhost.fuzai
    upstream www.aatest.com {
          server  10.0.0.201:81 weight=1 max_fails=3 fail_timeout=20s;
          server  10.0.0.202:80 weight=1 max_fails=3 fail_timeout=20s;
          server  10.0.0.203:80 weight=1 max_fails=3 fail_timeout=20s;
    }
    server{
        listen 80;
        server_name www.aatest.com;
        location / {
            proxy_pass         http://www.aatest.com;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }

    6.5 、 202 와 203 에서 다음 과 같은 메 인 프로필 을 편집 합 니 다.
    # vim /usr/local/service/nginx/conf/nginx.conf

    6.5. 202 와 203 에서 다음 과 같은 가상 호스트 설정 파일 을 편집 합 니 다.
    # vim /usr/local/service/nginx/conf/www.aatest.com
        server {
            listen       80 ; #     
            #   
            server_name  www.aatest.com;
            #        
                    root         /opt/zeng ;
    
                    # localtion          
            location / {
                index index.php index.html index.htm;
                if (!-e $request_filename) {
                    return 444;
                }
            }
    
                    #:       
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   /usr/local/nginx/html;
            }
    
                    #      localtion         ,     php sock
            location ~ \.php$ {
                fastcgi_pass   unix:/tmp/php-cgi-5313-web.sock;
                fastcgi_index  index.php;
                include        fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param SERVER_NAME $http_host;
                fastcgi_ignore_client_abort on;
            }
    
                    #             max  10 ,    30d( )
            location ~ \.(swf|js|css|xml|gif|jpg|jpeg|png|bmp)$ {
                error_log    off;
                access_log   off;
                            #expires      30d;
                expires      max;
            }
        }
    

                          [size = small] [color = blue] 는 다음 과 같이 요약 합 니 다. 단기 WEB 설정 1, 설치 라 이브 러 리 2, Nginx 3 설치, Nginx. conf 메 인 파일 편집 (가상 설정 파일 편집 후 주의 하 십시오. 메 인 파일 연결 (include file > 4, 가상 컴퓨터 설정 파일 편집 5, 서비스 시작 6, 사이트 에 대응 하 는 디 렉 터 리 를 만 들 고 정적 html 페이지 를 작성 하 십시오. echo "test" > index. html                     부하 균형 설정 환경: 10.0.0.201 부하 균형 서버: 대외 80 10.0.0.201 가상 호스트 (WEB) 81
    [/color][/size]
    10.0.32.111 포트 번호: 80
    10.0.0.131 포트 번호: 80
    단계 1, 201 32.111 131 서버 에서 모두 Nginx. conf 절 차 를 편집 합 니 다. 2, 201 111 131 에서 가상 컴퓨터 프로필 을 편집 합 니 다. 3. 201 에서 부하 균형 적 인 프로필 을 편집 합 니 다. 4. 서 비 스 를 시작 합 니 다.
    연습 문 제 는 다음 과 같다. 기업 은 3 개의 웹 사 이 트 를 만들어 야 한다. www. gongda 1. com www. gongda 2. com www. gongda 3. com 은 Nginx 를 설치 하고 3 개의 가상 호스트 를 열 어 브 라 우 저 에 입력 해 야 한다.http://www.gongda1.com 돌아 오 는 내용: this gongda 1http://www.gongda2.com 돌아 오 는 내용: this gongda 2http://www.gongda3.com 돌아 오 는 내용: this gongda 3

    좋은 웹페이지 즐겨찾기