Nginx 입문 부터 파악 까지 [(1 절 (총 3 절)] Centos 6.6 버 전

디 렉 터 리:
  • Nginx 소개.  
  • Nginx 의 특성.
  • Nginx 의 기능.
  • Nginx 의 모듈 유형.
  • 소스 코드 컴 파일 설치 Nginx.
  • nginx 관련 명령.
  • Nginx 의 프로필 소개.
  • Nginx 의 설정 명령 상세 설명.
  • 본문:
    1. Nginx 프로필: (nginx 홈 페이지 위 키 문서 에서 발췌)
      NGINX 는 무료 오픈 소스, 고성능 HTTP 서버 및 리 버스 프 록 시 뿐만 아니 라 IMAP / POP 3 프 록 시 서버 입 니 다. NGINX 는 고성능, 안정성 (안정성), 풍부 한 기능 세트, 간단 한 구성 및 낮은 리 소스 소비 (소모) 로 잘 알려 져 있 습 니 다.
      NGINX is one of a handful of servers written to address the 전통 적 인 서버 와 는 달리 NGINX doesn 't rely (의존) on threads to handle (스 레 드 처리) requests. instead it uses a much more scalable (확장 가능 한) event - driven (asynchronous, 비동기) architecture. This architecture uses small, but more importantly,수천 개의 동시 요청 을 처리 할 것 으로 예상 되 지 않 더 라 도 NGINX 의 고성능 및 소형 메모리 공간 을 활용 할 수 있 습 니 다. NGINX 스 케 일 (규모) 은 모든 방향 으로 작 습 니 다.
    2. Nginx 의 특성. 
      1) 모듈 화 디자인;
      2) 높 은 신뢰성:
        master --> worker 
      3) 저 메모리 소모: 
        10000 개의 keep - alive 모드 에서 connection 은 2.5MB 의 메모리 만 필요 합 니 다. 
      4) 열 배치 지원:
        멈 추 지 않 고 프로필 을 업데이트 하고 로그 파일 을 스크롤 하 며 프로그램 버 전 을 업그레이드 합 니 다. 
    3. Nginx 의 기능. 
      1. 기본 기능:    1) 정적 자원 의 웹 서버, 열 린 파일 설명 자 를 캐 시 할 수 있 습 니 다.    2) http, smpt, pop 3 프로 토 콜 의 역방향 프 록 시 서버;    3) 캐 시 가속, 부하 균형;    4) FastCGI (fpm, LNMP), uWSGI (python) 등 을 지원 합 니 다.     5) 모듈 화 (비 DSO 메커니즘), 필터 zip, SSI 및 이미지 의 대소 문자 조정;    6) SSL 지원:  2. 확장 기능:    1) 이름과 IP 기반 가상 호스트;    2) keepalive 지원;    3) 부 드 러 운 업 그 레이 드 를 지원 합 니 다.    4) 로그 버퍼 를 사용 하여 로그 저장 성능 을 제공 하 는 맞 춤 형 접근 로 그 를 지원 합 니 다.    5) url rewrite 지원;    6) 경로 별명 지원;    7) IP 및 사용자 기반 접근 제한 지원;    8) 속도 제한 을 지원 하고 병발 수 제한 을 지원 한다.
    4. Nginx 의 모듈 유형.
      1. 핵심 모듈  2. Standard HTTP modules   3. Optional HTTP modules    4. Mail modules   5. 3rd party modules 
    5. 소스 코드 컴 파일 설치 Nginx. 
      시스템 환경: CentOS 7.3 
      nginx 패키지 버 전: 1.10.2 안정 버 전
      Nginx 의 설치 방식 은 RPM 설치 와 소스 코드 컴 파일 설치 두 가지 가 있다.여 기 는 컴 파일 설치 방식 을 사용 합 니 다. Linux 시스템 은 CentOS 7.3 입 니 다. 
      먼저 홈 페이지 에서 Stable version 설치 패 키 지 를 다운로드 합 니 다.
    [root@localhost ~]# cat /etc/centos-release 
    CentOS release 6.6 (Final)
    [root@localhost ~]# wget http://nginx.org/download/nginx-1.10.2.tar.gz

    설치 시작:
    [root@localhost ~]# useradd -s /sbin/nologin -M nginx
    //  nginx   nginx    nginx    .
    [root@localhost ~]# mkdir /data/nginx/logs/ -p
    [root@localhost ~]# touch /data/nginx/logs/error.log  
    [root@localhost ~]# touch /data/nginx/{nginx.pid,nginx.lock}  
    //           .
    [root@localhost ~]# yum -y gd gd-devel pcre pcre-devel
    [root@localhost ~]# tar zxf nginx-1.10.2.tar.gz
    [root@localhost ~]# cd nginx-1.10.2
    [root@localhost nginx-1.10.2]# ls
    auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src
    [root@localhost nginx-1.10.2]#

     주:
      1) gd 라 이브 러 리 는 phop 처리 그래 픽 의 확장 라 이브 러 리 입 니 다. GD 라 이브 러 리 는 그림 을 처리 하 는 일련의 API 를 제공 합 니 다. GD 라 이브 러 리 를 사용 하여 그림 을 처리 하거나 그림 을 생 성 할 수 있 습 니 다. 
      2) PCRE (Perl Compatible Regular Expressions) 는 perl 호 환 을 포함 한 정규 표현 식 라 이브 러 리 입 니 다.
      컴 파일 설치 옵션 보기:
    [root@localhost nginx-1.10.2]# ./configure --help
     
      --help                             print this message
     
      --prefix=PATH                      set installation prefix
      --sbin-path=PATH                   set nginx binary pathname
      --modules-path=PATH                set modules path
      --conf-path=PATH                   set nginx.conf pathname
      --error-log-path=PATH              set error log pathname
      --pid-path=PATH                    set nginx.pid pathname
      --lock-path=PATH                   set nginx.lock pathname
     
      --user=USER                        set non-privileged user for
                                         worker processes
      --group=GROUP                      set non-privileged group for
                                         worker processes
     
      --build=NAME                       set build name
      --builddir=DIR                     set build directory
     
      --with-select_module               enable select module
      --without-select_module            disable select module
      --with-poll_module                 enable poll module
      --without-poll_module              disable poll module
     
      --with-threads                     enable thread pool support
     
      --with-file-aio                    enable file AIO support
      --with-ipv6                        enable IPv6 support
     
      --with-http_ssl_module             enable ngx_http_ssl_module
      --with-http_v2_module              enable ngx_http_v2_module
      --with-http_realip_module          enable ngx_http_realip_module
      --with-http_addition_module        enable ngx_http_addition_module
      --with-http_xslt_module            enable ngx_http_xslt_module
      --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module
      --with-http_p_w_picpath_filter_module    enable ngx_http_p_w_picpath_filter_module
      --with-http_p_w_picpath_filter_module=dynamic
       
      ......
     
    [root@localhost nginx-1.10.2]#

      주: 상기 모듈 을 컴 파일 할 때 선택 적 인 설치 가 필요 합 니 다. 만약 에 어떤 모듈 이 설치 할 때 빠 져 도 걱정 하지 마 세 요. nginx 는 열 배 치 를 지원 하기 때문에 필요 한 모듈 을 수시로 추가 할 수 있 습 니 다!
      다음 컴 파일:
    [root@nginx nginx-1.10.2]# ./configure \
     --prefix=/usr/local/nginx-1.10.2 \
     --error-log-path=/data/nginx/logs/error.log \
     --pid-path=/data/nginx/nginx.pid \
     --lock-path=/data/nginx/nginx.lock \
     --user=nginx \
     --group=nginx \
     --with-threads \
     --with-http_ssl_module \
     --with-http_p_w_picpath_filter_module \
     --with-http_p_w_picpath_filter_module=dynamic \
     --with-http_flv_module \
     --with-http_mp4_module  \
     --with-http_gunzip_module \
     --with-http_gzip_static_module \
     --with-http_slice_module  \
     --with-stream \
    [root@nginx nginx-1.10.2]# make && make install


      : 


    [root@nginx nginx-1.10.2]# cd
    [root@nginx ~]# ls /usr/local/nginx-1.10.2/ -d
    /usr/local/nginx-1.10.2/
    [root@nginx ~]# ln -sv /usr/local/nginx-1.10.2/ /usr/local/nginx
    "/usr/local/nginx" -> "/usr/local/nginx-1.10.2/"
    [root@nginx ~]#


      :

    [root@nginx ~]# ./usr/local/nginx/sbin/nginx 
    [root@nginx ~]# ss -tunlp |egrep "nginx"
    tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=11743,fd=6),("nginx",pid=11742,fd=6))
    [root@nginx ~]#


      iptables 80

        

    [root@localhost sbin]# iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
    [root@localhost sbin]# service iptables reload                                         
    iptables: Trying to reload firewall rules:                 [  OK  ]

     

    、nginx . 


     1. nginx :

      # /usr/local/nginx/sbin/nginx -V    

     2. :

    [root@localhost conf]# cat /etc/init.d/nginx 
    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /usr/local/nginx/conf/nginx.conf
    # config:      /usr/local/nginx/sbin/nginx
    # pidfile:     /data/nginx/nginx.pid
      
    # Source function library.
    . /etc/rc.d/init.d/functions
      
    # Source networking configuration.
    . /etc/sysconfig/network
      
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
      
    nginx="/usr/local/nginx/sbin/nginx"
    prog=$(basename $nginx)
      
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
      
    [ -f /usr/local/nginx ] && . /usr/local/nginx
    lockfile=/data/nginx/nginx.lock
      
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
       if [ -z "`grep $user /etc/passwd`" ]; then
           useradd -M -s /bin/nologin $user
       fi
       options=`$nginx -V 2>&1 | grep 'configure arguments:'`
       for opt in $options; do
           if [ `echo $opt | grep '.*-temp-path'` ]; then
               value=`echo $opt | cut -d "=" -f 2`
               if [ ! -d "$value" ]; then
                   # echo "creating" $value
                   mkdir -p $value && chown -R $user $value
               fi
           fi
       done
    }
      
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
      
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
      
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
      
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
      
    force_reload() {
        restart
    }
      
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
      
    rh_status() {
        status $prog
    }
      
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
      
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac



    、Nginx . 

     Nginx :

      1、main :               
      2、event: event         
      3、http{}: http     

      :

    、Nginx . 

     1. :

     1) user USERNAME [GROUPNAME]  

       worker ;
       :user nginx nginx  

       : ,GROUPNAME . 

     2) pid /path/to/PID_FILE 

       nginx pid . 

       : pid /data/nginx/nginx.pid  

       : pid . pid   pid , .

      pid :

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [root@nginx ~] # cat /data/nginx/nginx.pid cat /data/nginx/nginx .pid:  [root@nginx ~] # /usr/local/nginx/sbin/nginx  [root@nginx ~] # cat /data/nginx/nginx.pid 2561 [root@nginx ~] # ps -aux |egrep "nginx" root       2529  0.1  0.5 151800  5436 pts /0      S+   10:18   0:00 vim  /usr/local/nginx/conf/nginx .conf root       2561  0.0  0.1  45376  1112 ?        Ss   10:27   0:00 nginx: master process  /usr/local/nginx/sbin/nginx nginx      2562  0.0  0.1  45824  1884 ?        S    10:27   0:00 nginx: worker process root       2565  0.0  0.0 112664   972 pts /1      S+   10:28   0:00  grep   -E --color=auto nginx [root@nginx ~] #
     3) worker_connections  NUM; 
       모든 워 커 프로 세 스 가 열 수 있 는 최대 파일 핸들 수 를 지정 합 니 다.    기본 파일 열기 최대 수 는 1024 개 입 니 다.
     2. 성능 최적화 관련 설정:
     1) worker_processes NUM; 
       nginx 프로 세 스 수 를 지정 합 니 다. cpu 수 에 따라 지정 하 는 것 을 권장 합 니 다. 일반적으로 2 개의 4 핵 cpu 는 8 입 니 다.
       예: workerprocesses 4;
     2) worker_cpu_affinity cpumask ...;    프로 세 스 마다 CPU 를 할당 하여 캐 시 명중률 을 높 일 것 을 지정 합 니 다.
       예: worker_cpu_affinity 00000001 00000010 00000100 00001000;
       상례 에서 4 개의 프로 세 스 를 4 개의 cpu 에 분배 하 였 습 니 다. 주의 와 workerprocess 수 는 대응 합 니 다. 물론 여러 개 를 쓰 거나 하나의 프로 세 스 를 여러 cpu 에 할당 할 수 있 습 니 다.
     3) timer_resolution TIME; 
       타이머 해상도 지정: 이 값 을 낮 추 면 gettimeofday () 시스템 호출 횟수 를 줄 일 수 있 습 니 다.
       기본 값: none   예: timerresolution 100ms;
       이 설정 명령 은 사용자 가 gettimeofday () 를 호출 하 는 횟수 를 줄 일 수 있 도록 합 니 다.기본 적 인 상황 에서 이 함 수 는 매번 I / O 포트 감청 (예 를 들 어 epoll wait) 이 돌아 오 면 호출 되 고 timer 를 통 해 호출 됩 니 다.resolution 설정 옵션 은 gettimeofday () 함수 호출 간격 을 직접 지정 할 수 있 습 니 다.
     4) worker_priority NUM:  
       워 커 프로 세 스 의 nice 값, 즉 워 커 프로 세 스 의 우선 순 위 를 가리 키 기; 
       nice 값 이 작 을 수록 우선 순위 가 높 을 수록 기본 값 은 관리자 가 nice 값 을 조정 할 수 있 는 권한 이 있 습 니 다. 
     3. 이벤트 관련 설정: 
     1) accept_mutex {off|on};   master 프로 세 스 를 지정 하여 사용자 가 각 worker 프로 세 스 에 요청 할 때 사용 할 부하 균형 잠 금 을 지정 합 니 다.on. 여러 워 커 가 돌아 가면 서 새로운 요청 에 응 할 수 있 음 을 표시 합 니 다. 2) lock_file file;   accept_mutex 에서 사용 하 는 잠 금 파일 경로;     3) use [epoll|rtsig|select|poll];    사용 한 시간 모형 가리 키 기;nginx 가 스스로 선택 하도록 권장 합 니 다.     4) worker_connections #;    단일 워 커 프로 세 스 가 처리 할 수 있 는 최대 병렬 연결 수 를 설정 합 니 다.   계산 공식: workerconnections * work_processes, 이 값 보다 작 을 수 있 습 니 다. 
     4. 사용 자 는 디 버 깅, 포 지 셔 닝 문제 에 사 용 됩 니 다. 1) daemon {on|off};    nginx: 디 버 깅 을 데 몬 으로 실행 할 지 여부 입 니 다.  2) master_process {on|off};    master / worker 모델 로 nginx 를 실행 할 지 여부;디 버 깅 시 off 로 설정 할 수 있 습 니 다. 3) error_log file |stderr | syslog:server=address[,parameter=value] | memory:size [debug | info | notice | warn | error | crit | alert | emerg];    문법: errorlog [위치] [레벨];    debug 단 계 를 사용 하려 면 nginx 를 컴 파일 할 때 -- with - debug 옵션 을 사용 해 야 합 니 다. 
     5. 정리: 항상 조정 해 야 할 매개 변수:   worker_processes,worker_connections,worker_cpu_affinity,worker_priority. 
    --- 1 부 완성!

    좋은 웹페이지 즐겨찾기