Nginx 접근 로그, Nginx 로그 절단, 정적 파일 은 로그 와 만 료 시간 을 기록 하지 않 습 니 다.

6516 단어
목차
1. Nginx 방문 일지 2, Nginx 로그 절단 3. 정적 파일 은 로그 와 만 료 시간 을 기록 하지 않 습 니 다.
1. Nginx 접근 로그
  • Nginx 로그 형식
  • [root@minglinux-01 ~] grep -A2 log_format /usr/local/nginx/conf/nginx.conf
        log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]' 
        ' $host "$request_uri" $status'
        ' "$http_referer" "$http_user_agent"';     
    

    nginx 프로필 에서 ";" 설정 의 끝 이기 때문에 이상 은 한 줄 의 설정 입 니 다. 이 줄 의 설정 은 로그 형식 을 정의 합 니 다.
    combined_realip 는 로그 형식의 이름 입 니 다. 뒤에 $remote 를 참조 할 수 있 습 니 다.addr 웹 사 이 트 를 방문 하 는 사용자 의 출구 IP, 클 라 이언 트 ip (공공 네트워크 ip) $httpx_forwarded_for 프 록 시 를 위 한 IP, 프 록 시 를 사용 하면 프 록 시 IP $time 을 기록 합 니 다.local 서버 로 컬 시간 $host 접근 호스트 이름 $requesturi 접근 할 URL 주소 $status 상태 코드 $httpreferer 는 referer 주소 $httpuser_에이전트 useragent
  • 가상 호스트 로그 형식 설정
  • ngix. conf 에서 ming 이라는 프로필 을 정 의 했 습 니 다
  • log_format ming '$remote_addr $http_x_forwarded_for [$time_local]' 
        ' $host "$request_uri" $status'
        ' "$http_referer" "$http_user_agent"'; 
    
  • 가상 호스트 설정 파일 에 접근 로그 의 경로 와 호출 ming 형식 을 지정 합 니 다
  •   1 server
      2 {
      3     listen 80;
      4     server_name test.com test2.com test3.com;
      5     index index.html index.htm index.php;
      6     root /data/wwwroot/test.com;
      7     if ($host != 'test.com' ) {
      8         rewrite  ^/(.*)$  http://test.com/$1  permanent;
      9     }
     10     access_log /tmp/test.com.log ming;  //    
     11 
     12     location  ~admin.php
     13     {
     14         auth_basic              "Auth";
     15         auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
     16     }
     17 }
    

    access_log 지정 로그 의 저장 경로, 맨 뒤에 지정 한 로그 의 형식 이름
  • 테스트
  • [root@minglinux-01 /usr/local/nginx/conf/vhost] /usr/local/nginx/sbin/nginx -t 
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@minglinux-01 /usr/local/nginx/conf/vhost] /usr/local/nginx/sbin/nginx -s reload
    [root@minglinux-01 /usr/local/nginx/conf/vhost] curl -x127.0.0.1:80 test.com
    test page
    [root@minglinux-01 /usr/local/nginx/conf/vhost] curl -x127.0.0.1:80 test3.com
    
    301 Moved Permanently
    
    

    301 Moved Permanently


    nginx/1.12.2
    [root@minglinux-01 /usr/local/nginx/conf/vhost] cat /tmp/test.com.log 127.0.0.1 - [27/Nov/2018:21:56:30 +0800] test.com "/" 200 "-" "curl/7.29.0" 127.0.0.1 - [27/Nov/2018:21:56:37 +0800] test3.com "/" 301 "-" "curl/7.29.0"

    2. Nginx 로그 절단
    Nginx 는 httpd 와 자체 절단 도구 가 아 닌 Nginx 로 그 를 자 르 려 면 시스템 의 절단 도구 나 사용자 정의 스 크 립 트 를 사용 해 야 합 니 다.로그 절단 스 크 립 트 를 만 듭 니 다:
    [root@minglinux-01 /usr/local/sbin] vim nginx_logrotate.sh
    
      1 #!/bin/bash
      2 d=`date -d "-1 day" +%Y%m%d` ##date -d "-1 day"        
      3 logdir="/tmp/"   ##      
      4 nginx_pid="/usr/local/nginx/logs/nginx.pid" ##  nginx pid
      5 cd $logdir
      6 for log in `ls *.log`
      7 do
      8     mv $log $log-$d   ##        $log-$d”,$d      
         
      9 done
     10 /bin/kill -HUP `cat $nginx_pid`  ##     nginx -s reload(
              )
     11 
    
  • 스 크 립 트 실행
  • [root@minglinux-01 /usr/local/sbin]  sh -x /usr/local/sbin/nginx_logrotate.sh  // -x      
    ++ date -d '-1 day' +%Y%m%d
    + d=20181126
    + logdir=/tmp/
    + nginx_pid=/usr/local/nginx/logs/nginx.pid
    + cd /tmp/
    ++ ls php_errors.log test.com.log
    + for log in '`ls *.log`'
    + mv php_errors.log php_errors.log-20181126
    + for log in '`ls *.log`'
    + mv test.com.log test.com.log-20181126
    ++ cat /usr/local/nginx/logs/nginx.pid
    + /bin/kill -HUP 1584
    [root@minglinux-01 /usr/local/sbin] ls /tmp/  
    mysql.sock               php-fcgi.sock          vmware-root
    pear                     test.com.log
    php_errors.log-20181126  test.com.log-20181126   
    
    

    스 크 립 트 는 전날 로그 에 날짜 접 두 사 를 붙 이 고 새 로그 파일 을 만 듭 니 다.
  • 청소 일지
  • [root@minglinux-01 /usr/local/sbin] find /tmp/ -name *.log-* -type f -mtime +30|xargs rm
    rm:             //             ,       
    Try 'rm --help' for more information.
    

    명령 은 / tmp / 디 렉 터 리 의 이름 이 일치 하 는. log - 를 찾 고 최근 파일 내용 이 수 정 된 시간 이 30 일 이전 파일 을 초과 한 다 는 뜻 입 니 다.
  • 퀘 스 트 계획 추가
  • [root@minglinux-01 /usr/local/sbin] crontab -e
    
     0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh
    

    매일 새벽 0 시 에 스 크 립 트 실행
    3. 정적 파일 은 로그 와 만 료 시간 을 기록 하지 않 습 니 다.
    가상 호스트 설정 파일 에 다음 과 같은 내용 을 추가 합 니 다.
     ···
            location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$   //  .gif/.jpg/.jpeg/.png/.bmp/.swf
            {
                  expires      7d;   //       7 
                  access_log off;  //     
            }
            localtion ~ .*\.(js|css)$
            {
                  expires     12h;   //               
                  access_log off;   //     
            }
    ···
    
  • 테스트
  • [root@minglinux-01 /usr/local/sbin] /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@minglinux-01 /usr/local/sbin] /usr/local/nginx/sbin/nginx -s reload
    [root@minglinux-01 /usr/local/sbin] cd /data/wwwroot/test.com/
    [root@minglinux-01 /data/wwwroot/test.com] ls
    1.html  admin  admin.php  index.html
    [root@minglinux-01 /data/wwwroot/test.com] vim 1.gif
    [root@minglinux-01 /data/wwwroot/test.com] vim 2.js
    [root@minglinux-01 /data/wwwroot/test.com] curl -x127.0.0.1:80 test.com/1.gif
    a
    [root@minglinux-01 /data/wwwroot/test.com] curl -x127.0.0.1:80 test.com/2.js
    g
    [root@minglinux-01 /data/wwwroot/test.com] curl -x127.0.0.1:80 test.com/index.html
    test page
    [root@minglinux-01 /data/wwwroot/test.com] cat /tmp/test.com.log
    127.0.0.1 - [27/Nov/2018:23:02:04 +0800] test.com "/index.html" 200 "-" "curl/7.29.0"    
    //  js gif         
    
    [root@minglinux-01 /data/wwwroot/test.com] curl -x127.0.0.1:80 test.com/2.js -I
    HTTP/1.1 200 OK
    Server: nginx/1.12.2
    Date: Tue, 27 Nov 2018 15:05:30 GMT
    Content-Type: application/javascript
    Content-Length: 2
    Last-Modified: Tue, 27 Nov 2018 14:59:37 GMT
    Connection: keep-alive
    ETag: "5bfd5bd9-2"
    Expires: Wed, 28 Nov 2018 03:05:30 GMT
    Cache-Control: max-age=43200  //         43200s 12 
    Accept-Ranges: bytes
    
    

    좋은 웹페이지 즐겨찾기