Nginx 서버 설치 및 설정

설치 하 다
1. 우선 부족 한 의존 팩 설치
[root@localhost /]# yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
  • zlib zlib - devel \ # nginx 에 gzip 모듈 을 제공 하려 면 zlib 라 이브 러 리 지원 이 필요 합 니 다
  • openssl openssl - devel \ # nginx 에 ssl 기능 제공
  • pcre pcre - devel \ # 주소 재 작성 rewrite 기능 지원
  • 2, 다운로드 및 압축 풀기 Nginx
    [root@localhost src]# wget http://nginx.org/download/nginx-1.13.3.tar.gz
    [root@localhost src]# tar xvf nginx-1.13.3.tar.gz
    [root@localhost src]# cd nginx-1.13.3

    3. 컴 파일 설치
    후속 준 비 를 위해 플러그 인 모듈 2 개 를 따로 다운로드 합 니 다: nginxupstream_check_module - 0.3.0. tar. gz - 백 엔 드 서버 의 상 태 를 검사 합 니 다. nginx - goodies - nginx - sticky - module - ng - bd312d586752. tar. gz (/ usr / local / src 에서 압축 을 풀 고 디 렉 터 리 를 nginx - sticky - module - ng - 1.2.5 로 이름 을 바 꾸 는 것 을 권장 합 니 다) * - 백 엔 드 부하 균형 해결 session sticky 질문 *.
    #          
    [root@localhost src]# wget -O "nginx_upstream_check_module-0.3.0.tar.gz" https://codeload.github.com/yaoweibin/nginx_upstream_check_module/tar.gz/v0.3.0
    [root@localhost nginx-1.13.3]# wget -O "nginx-sticky-module-ng-1.2.5.zip" https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/08a395c66e42.zip
    
    #           
    [root@localhost src]# tar -xvf nginx_upstream_check_module-0.3.0.tar.gz
    [root@localhost src]# unzip nginx-sticky-module-ng-1.2.5.zip
    [root@localhost src]# mv nginx-goodies-nginx-sticky-module-ng-08a395c66e42/ nginx-sticky-module-ng-1.2.5
    [root@localhost nginx-1.13.3]# ./configure \
    --prefix=/usr/local/nginx \
    --with-pcre \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-http_gzip_static_module \
    --with-http_realip_module \
    --pid-path=/usr/local/nginx/run/nginx.pid \
    --without-mail_pop3_module \
    --without-mail_imap_module \
    --without-mail_smtp_module \
    --add-module=../nginx_upstream_check_module-0.3.0 \
    --add-module=../nginx-sticky-module-ng-1.2.5
    [root@localhost nginx-1.13.3]# make
    [root@localhost nginx-1.13.3]# make install

    make 는 서버 가 쌍 핵 이 라면 - j2 를 통 해 쌍 핵 으로 컴 파일 할 수 있 는 작은 기술 이 있 습 니 다. - j4 는 4 핵 컴 파일 을 대표 합 니 다.
    상용 컴 파일 옵션 설명
  • – prefix = PATH: nginx 의 설치 디 렉 터 리 를 지정 합 니 다.기본 / usr / local / nginx
  • – conf - path = PATH: ngix. conf 프로필 의 경 로 를 설정 합 니 다.nginx 는 명령 행 의 - c 옵션 을 통 해 다른 프로필 을 시작 할 수 있 습 니 다.기본 값 은 prefix / conf / nginx. conf
  • – user = name: nginx 작업 프로 세 스 를 설정 한 사용자.설치 가 완료 되면 언제든지 nginx. conf 설정 파일 에서 user 명령 을 변경 할 수 있 습 니 다.기본 사용자 이름 은 nobody 입 니 다.group = name 유사
  • – with - pcre: PCRE 라 이브 러 리 의 소스 경 로 를 설정 합 니 다. yum 방식 으로 설치 되 어 있 으 면 – with - pcre 를 사용 하여 라 이브 러 리 파일 을 자동 으로 찾 습 니 다.– with - pcr = PATH 를 사용 할 때 는 PCRE 사이트 에서 pcre 라 이브 러 리 의 원본 코드 (버 전 4.4 - 8.30) 를 다운로드 하고 압축 을 풀 어야 하 며 나머지 는 Nginx 의. / configure 와 make 에 맡 겨 야 합 니 다.perl 정규 표현 식 은 location 명령 과 ngx 에 사 용 됩 니 다.http_rewrite_module 모듈 중.
  • – with - zlib = PATH: zlib (버 전 1.1.3 - 1.2.5) 의 원본 디 렉 터 리 를 지정 합 니 다.기본적으로 사용 되 는 네트워크 전송 압축 모듈 ngxhttp_gzip_module 시 zlib 를 사용 해 야 합 니 다.
  • –with-http_ssl_module: https 프로 토 콜 모듈 을 사용 합 니 다.기본적으로 이 모듈 은 구축 되 지 않 았 습 니 다.전 제 는 openssl 과 openssl - devel 이 설치 되 어 있다 는 것 이다
  • .
  • –with-http_stub_status_module: Nginx 의 현재 상 태 를 모니터링 하 는 데 사용
  • –with-http_realip_module: 이 모듈 을 통 해 클 라 이언 트 요청 헤더 에 있 는 클 라 이언 트 IP 주소 값 (예 를 들 어 X - Real - IP 또는 X - Forward - For) 을 변경 할 수 있 습 니 다. 배경 서버 가 원본 클 라 이언 트 의 IP 주 소 를 기록 할 수 있 도록 하 는 것
  • – add - module = PATH: nginx - sticky - module - ng 또는 캐 시 모듈 과 같은 제3자 외부 모듈 을 추가 합 니 다.새 모듈 을 추가 할 때마다 다시 컴 파일 해 야 합 니 다 (Tengine 은 module 에 새로 가입 할 때 다시 컴 파일 하지 않 아 도 됩 니 다)
  • 배치
    1. Nginx 실행 에 사용 할 사용자 ww 만 들 기
    [root@localhost conf]# groupadd nginx 
    [root@localhost conf]# useradd -g nginx nginx

    2. nginx. conf 설정
    nginx 기본 설정 파일 도 nginx 를 정상적으로 시작 할 수 있 습 니 다.여기에 프로필 의 예 시 를 따로 제공 합 니 다.
    다음 nginx. conf 는 nginx 가 전단 에서 역방향 프 록 시 서버 를 만 드 는 예 를 간단하게 실현 하고 js, png 등 정적 파일, jsp 등 동적 요청 을 다른 서버 로 전송 합 니 다.
    [root@localhost conf]#  cat /usr/local/nginx/conf/nginx.conf
    user  nginx nginx;
    worker_processes  2;
    error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    pid        /usr/local/nginx/run/nginx.pid;
    events {
        use epoll;
        worker_connections  2048;
    }
    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"';
        #access_log  logs/access.log  main;
        sendfile        on;
        # tcp_nopush     on;
        keepalive_timeout  65;
      # gzip      
        gzip on;
        gzip_min_length 1k;
        gzip_buffers    4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 6;
        gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
        gzip_vary on;
    
      # http_proxy   
        client_max_body_size   10m;
        client_body_buffer_size   128k;
        proxy_connect_timeout   75;
        proxy_send_timeout   75;
        proxy_read_timeout   75;
        proxy_buffer_size   4k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size   64k;
        proxy_temp_file_write_size  64k;
        proxy_temp_path   /usr/local/nginx/proxy_temp 1 2;
      #               
        upstream  backend  { 
                  #ip_hash; 
                  server   192.168.10.100:8080 max_fails=2 fail_timeout=30s ;  
                  server   192.168.10.101:8080 max_fails=2 fail_timeout=30s ;  
        }
      #           
        server {
            listen       80;
            server_name  itoatest.example.com;
            root   /apps/oaapp;
            charset utf-8;
            access_log  logs/host.access.log  main;
            #  /        +    
            location / {
                root   /apps/oaapp;
                index  index.jsp index.html index.htm;
                proxy_pass        http://backend;  
                proxy_redirect off;
                #    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_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    
            }
            #    ,nginx    ,  backend  tomcat
            location  ~* /download/ {  
                root /apps/oa/fs;  
    
            }
            location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$   
            {   
                root /apps/oaapp;   
                expires      7d; 
            }
            location /nginx_status {
                stub_status on;
                access_log off;
                allow 192.168.10.0/24;
                deny all;
            }
            location ~ ^/(WEB-INF)/ {   
                deny all;   
            }
            #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;
            }
        }
      ##       ,server     
    }

    3. 설정 파일 ngnix. conf 의 정확성 명령 검사
    [root@localhost conf]# /usr/local/nginx/sbin/nginx -t

    3. 시스템 서비스 에 추가
    Nginx 설치 완료 후 기본적으로 시스템 서비스 로 등록 되 지 않 기 때문에 시스템 서비스 스 크 립 트 를 수 동 으로 추가 해 야 합 니 다./ etc / init. d 디 렉 터 리 에 nginx 파일 을 새로 만 들 고 권한 을 변경 하면 됩 니 다.
    1. 새 nginx 시작 스 크 립 트
    [root@localhost src]# vim /etc/init.d/nginx
    
    #!/bin/bash
    #
    # nginx - this script starts and stops the nginx daemin
    #
    # 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
    # pidfile: /usr/local/nginx/logs/nginx.pid
    
    nginxd=/usr/local/nginx/sbin/nginx
    nginx_config=/usr/local/nginx/conf/nginx.conf
    nginx_pid=/usr/local/nginx/logs/nginx.pid
    
    RETVAL=0
    prog="nginx"
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ ${NETWORKING} = "no" ] && exit 0
    [ -x $nginxd ] || exit 0
    
    # Start nginx daemons functions.
    start(){
    
            if [ -e $nginx_pid ]; then
                    echo "nginx already running..."
                    exit 1
            fi
            echo -n $"Starting $prog:"
            daemon $nginxd -c ${nginx_config}
            RETVAL=$?
            echo
            [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
            return $RETVAL
    }
    
    # Stop nginx daemons functions.
    stop(){
            echo -n $"Stopping $prog:"
            killproc $nginxd
            RETVAL=$?
            echo
            [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx $nginx_pid
    }
    
    #reload nginx service functions.
    reload(){
            echo -n $"Reloading $proc:"
            killproc $nginxd -HUP
            RETVAL=$?
            echo
    }
    # See how we were called.
    case "$1" in
            start)
                    start
                    ;;
            stop)
                    stop
                    ;;
            reload)
                    reload
                    ;;
            restart)
                    stop
                    start
                    ;;
            status)
                    status $prog
                    RETVAL=$?
                    ;;
            *)
                    echo $"Usage: $prog {start|stop|restart|reload|status|help}"
                    exit 1
    esac
    
    exit $RETVAL

    2. 권한 수정 및 시동
  • 수정 권한: chmod 755 / etc / init. d / nginx
  • 시스템 서비스 추가: chkconfig – add nginx
  • 시동: chkconfig nginx on
  • 켜 진 서비스 보기: chkconfig – list
  • 비고
  • 시작 서비스: service nginx start
  • 서비스 정지: service nginx stop
  • 서비스 재 개: service nginx reload
  • 첨부: nginx 명령 을 추가 하 는 다른 방법
    1. 환경 변수 설정
    [root@localhost nginx-1.13.3]# vim /etc/profile.d/nginx.sh
    export PATH=/usr/local/nginx/sbin:$PATH

    2. 설 정 된 변 수 를 불 러 옵 니 다.
    [root@localhost nginx-1.13.3]# source /etc/profile

    3. 다음은 nginx 에서 자주 사용 하 는 명령 입 니 다. 이 명령 을 정상적으로 사용 할 수 있다 면 nginx 가 설치 되 었 음 을 설명 합 니 다.
  • nginx: 명령 행 에 nginx 를 직접 입력 하면 nginx 를 시작 할 수 있 습 니 다.
  • nginx - t: 설정 파일 이 올 바른 지 확인 합 니 다.이 명령 은 nginx. conf 설정 파일 의 형식, 문법 이 정확 한 지 확인 할 수 있 습 니 다.설정 파일 에 오류 가 있 으 면 알림 이 나타 납 니 다.ngix. conf 파일 이 정확 하면 성공 알림 도 나타 납 니 다.
  • nginx - s reload: nginx 를 다시 불 러 오 거나 다시 시작 합 니 다. 새로운 nginx. conf 설정 파일 로 정의 합 니 다.
  • nginx - s stop: nginx 를 정지 합 니 다.

  • 질문
    1. nginx 시작 후 "systemctl status nginx" 를 사용 하여 시작 상 태 를 봅 니 다.
    [root@localhost logs]# systemctl status nginx
    ● nginx.service - SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server
       Loaded: loaded (/etc/rc.d/init.d/nginx; bad; vendor preset: disabled)
       Active: active (running) since   2017-07-20 17:00:44 CST; 39min ago
         Docs: man:systemd-sysv-generator(8)
      Process: 2968 ExecStart=/etc/rc.d/init.d/nginx start (code=exited, status=0/SUCCESS)
     Main PID: 2971 (nginx)
       CGroup: /system.slice/nginx.service
               ├─2971 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
               └─2973 nginx: worker process
    
    7  20 17:00:44 localhost systemd[1]: Starting SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server...
    7  20 17:00:44 localhost nginx[2968]: /etc/rc.d/init.d/nginx:   26  :[: =:        
    7  20 17:00:44 localhost nginx[2968]: Starting nginx:[      ]
    7  20 17:00:44 localhost systemd[1]: PID file /usr/local/nginx/logs/nginx.pid not readable (yet?) after start. 

    질문 1. / etc / rc. d / init. d / nginx: 26 번 째 줄: [: =: 1 원 표현 식 기대
    해결 방법: ["$yn"! = "] 변수 에 따 옴 표를 붙 입 니 다.
    문제 2, PID 파일 / usr / local / nginx / logs / nginx. pid 를 읽 을 수 없습니다 (아직?) 시작 후.
    해결 방법: 1. nginx 가 실행 중인 그룹 과 사용 자 를 만 들 고 해당 디 렉 터 리 를 새 그룹 과 사용자 에 게 할당 합 니 다. 2. 디 렉 터 리 권한 을 읽 을 수 있 는 쓰기 로 변경 합 니 다: chmod - R 766 logs /
    2. 시동 이 걸 리 지 않 음
    7  20 16:17:51 localhost nginx[2671]: Starting nginx:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    7  20 16:17:51 localhost nginx[2671]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    7  20 16:17:52 localhost nginx[2671]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    7  20 16:17:52 localhost nginx[2671]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    7  20 16:17:53 localhost nginx[2671]: nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    7  20 16:17:53 localhost nginx[2671]: nginx: [emerg] still could not bind()
    7  20 16:17:53 localhost nginx[2671]: [  ]
    7  20 16:17:53 localhost systemd[1]: nginx.service: control process exited, code=exited status=1
    7  20 16:17:53 localhost systemd[1]: Failed to start SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse proxy and IMAP/POP3 proxy server.

    포트 가 점용 되 었 는 지 확인 하기

    좋은 웹페이지 즐겨찾기