Nginx 입문 부터 파악 까지 [(1 절 (총 3 절)] Centos 6.6 버 전
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 부 완성! 
  
                              
                          
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.