13. Nginx 액세스 로그 & 로그 절단 & 정적 파일

[toc]
12.10 Nginx 접근 로그
1 프로필 열기:
vim /usr/local/nginx/conf/vhost/../nginx.conf
[root@xavi vhost]# vim ../nginx.conf

다음 을 찾 으 면 로그 형식 을 정의 합 니 다.
log_format xavi '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';

combined_realip;로그 형식 이름 을 다른 것 으로 바 꿀 수 있 습 니 다. 나중에 상기 정의 로그 의 이름 을 xavi 로 바 꿀 수 있 습 니 다.주: 여기 이름 이 어떻게 바 뀌 었 는 지 이따가 인용 할 때 뭐라고 쓰 세 요!
2. 형식 분석:
3 가상 호스트 에서 접근 로그 경 로 를 정의 합 니 다.
주 프로필 nginx. conf 에서 로그 형식 을 정의 하 는 것 외 에 가상 호스트 프로필 에 추가 해 야 합 니 다.
access_log /tmp/haha.com_acess.log xavi;access 사용로그 저장 경로 와 사용 할 로그 형식 이름 을 지정 합 니 다.
[root@xavi vhost]# vim atorreid.com.conf

server
{
    listen 80 default_server;
    server_name atorreid.com xavi.com abc.com;
    index index.html index.htm index.php;
    root /data/nginx/www.torreid.com;
    if ($host != 'torreid.com' ) {
        rewrite  ^/(.*)$  http://torreid.com/$1  permanent;
    }
    access_log /tmp/test.com.log xavi
     location /
     {
       auth_basic         "Auth";
       auth_basic_user_file /usr/local/nginx/conf/htpasswd;
     }
}

4. 방문 테스트
[root@xavi vhost]# /usr/local/nginx/sbin/nginx -s reload
[root@xavi vhost]# !curl
curl -x127.0.0.1:80 www.atorreid.com/index.html -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.1
Date: Wed, 14 Mar 2018 16:05:55 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: http://torreid.com/index.html

12.12 Nginx 로그 절단
1. 로그 절단 이 왜 필요 한 지
로 그 는 통계 오류 에 있어 서 매우 유리 합 니 다. 만약 에 100 G 의 로 그 를 보지 않 고 열 려 면 우 리 는 오래 기 다 려 야 합 니 다. 그러면 우리 의 하드웨어 자원 을 낭비 할 뿐만 아니 라 시간 도 낭비 합 니 다.매일 하나의 일지 로 나 누 면 우리 가 바 리 케 이 드 를 제거 하 는 데 유리 하지 않 을 까? -by ZDY
Nginx 는 Apache 와 는 다른 절단 도구 가 있 기 때문에 스 크 립 트 를 작성 해 야 합 니 다.
2. 셸 스 크 립 트 편집, 로그 절단 실행
sbin 디 렉 터 리 에 스 크 립 트 를 두 는 습관 을 들 여 라.
vim /usr/local/sbin/nginx_logrotate.sh
[root@xavi ~]# vim /usr/local/sbin/nginx_logrotate.sh

#! /bin/bash
d=`date -d "-1 day" +%Y%m%d`
logdir="/tmp/"
nginx_pid="/usr/local/nginx/logs/nginx.pid"
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done
/bin/kill -HUP `cat $nginx_pid`

d=date -d "-1 day" +%Y%m%d;어제 날짜 for log in ls *.log domv $log $log - $ddone 을 만 듭 니 다. 이것 은 for 순환 입 니 다. ls 가 열거 한 log 파일 을 날짜 형식 으로 이름 을 바 꾸 는 nginx 를 실행 합 니 다.pid=”/usr/local/nginx/logs/nginx.pid”;마지막 줄 을 위해 설 정 된 거 야.
/ bin / kill - HUP cat $nginx_pid 마지막 줄 의 뜻 과 이전에 사 용 했 던 - s reload 는 ngix. pid 를 다시 불 러 오 면 새로운 로그 파일 을 다시 만 듭 니 다.그렇지 않 으 면 로그 파일 이 생 성 되 지 않 습 니 다.
sh -x /usr/local/sbin/nginx_logrotate. sh 셸 스 크 립 트 실행 과정 보기
[root@xavi ~]# sh -x /usr/local/sbin/nginx_logrotate.sh
++ date -d '-1 day' +%Y%m%d
+ d=20180314
+ logdir=/tmp/
+ nginx_pid=/usr/local/nginx/logs/nginx.pid
+ cd /tmp/
++ ls atorreid.com.log ' php_errors.log' php_errors.log test.com.log torrecid.com.log
+ for log in '`ls *.log`'
+ mv atorreid.com.log atorreid.com.log-20180314
+ for log in '`ls *.log`'
+ mv php_errors.log php_errors.log-20180314
+ for log in '`ls *.log`'
+ mv php_errors.log php_errors.log-20180314
mv:     "php_errors.log"      (stat):          
+ for log in '`ls *.log`'
+ mv test.com.log test.com.log-20180314
+ for log in '`ls *.log`'

3. 로그 정리
절단 이 있 으 면 우리 의 일상적인 업무 수 요 를 만족 시 킬 수 있 지만, 방 문 량 이 급증 함 에 따라 오래된 로그 파일 을 삭제 하지 않 으 면 우리 의 디스크 는 곧 다 차지 할 것 이다.
  • 한 달 이 넘 는 로 그 를 삭제 합 니 다 (물론 이것 도 스 크 립 트 에 쓸 수 있 습 니 다)
  • [root@xavi ~]# find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm

    4. 계획 작업 생 성
    crontab -e
    0 * / bin / bash / usr / local / sbin / nginxlogrotate.sh
    [root@xavi ~]# crontab -e
    no crontab for root - using an empty one
    
    0 0 * * * /bin/bash /usr/local/sbin/nginx_logrotate.sh

    전체 예제: 매일 느 린 로 그 를 대상 으로 로그 절단:
    일곱 째 블 로그 에서 전재:http://www.okay686.cn/524.html
    #! /bin/bash
    
    d=`date -d "-1 day" +%Y%m%d`
    logdir="/usr/local/php-fpm/var/log/"
    nginx_pid="/usr/local/nginx/logs/nginx.pid"
    cd $logdir
    for log in `find . -name "*_slow.log"`
    do
        mv $log $log-$d
    done
    /bin/kill -HUP `cat $nginx_pid`
    
    find . -name "*_slow.log-*" -mtime +30 | xargs rm -rf

    12.12 정적 파일 은 로그 와 만 료 시간 을 기록 하지 않 습 니 다.
    1. 가상 호스트 설정 파일 location ~ 정적 파일 을 지정 할 수 있 습 니 다. expires 설정 만 료 시간, accesslog 를 off 로 설정 하면 접근 로 그 를 기록 하지 않 을 수 있 습 니 다.
    [root@xavi ~]# cd /usr/local/nginx/conf/vhost/
    [root@xavi vhost]# ls
    atorreid.com.conf  bcd.com.conf  test.com.conf
    [root@xavi vhost]# vim test.com.conf
    server
    {
        listen 80 default_server;
        server_name test.com xavi.com abc.com;
        index index.html index.htm index.php;
        root /data/nginx/test.com;
        if ($host != 'test.com' ) {
            rewrite  ^/(.*)$  http://test.com/$1  permanent;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
              expires      7d;
              access_log off;
        }
    location ~ .*\.(js|css)$
        {
              expires      12h;
              access_log off;
        }
         access_log /tmp/test.com.log xavi;
    
    }
  • 상세 설명:
  • location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
              expires      7d;
              access_log off;
        }
    
    ~  .gif  .jpg  .jpeg             ,|    
    \      ,XXX.gif

    2. 테스트
    gif 와 js 접미사 이름 을 만 드 는 파일
    [root@xavi vhost]# cd /data/nginx/test.com/
    [root@xavi test.com]# ls
    admin  admin.php  index.html
    [root@xavi test.com]# vim 1.gif
    [root@xavi test.com]# vim 2.js

    1. gif 와 2. js 를 방문 하면,
    [root@xavi test.com]# curl -x127.0.0.1:80 test.com/2.js
    axccdecdcece:
    [root@xavi test.com]# curl -x127.0.0.1:80 test.com/1.gif
    dadadsdsda
    [root@xavi test.com]# curl -x127.0.0.1:80 test.com/x.gif
    
    404 Not Found
    
    

    404 Not Found


    nginx/1.12.1

    로그 파일 보기
    [root@xavi test.com]# cat /tmp/test.com.log
    127.0.0.1 - [15/Mar/2018:21:09:12 +0800] www.atorreid.com "/index.html" 301 "-" "curl/7.29.0"
    [root@xavi test.com]# curl -x127.0.0.1:80 test.com/xx2.jsdsdsad
    
    404 Not Found
    
    

    404 Not Found


    nginx/1.12.1
    [root@xavi test.com]# cat /tmp/test.com.log 127.0.0.1 - [15/Mar/2018:21:09:12 +0800] www.atorreid.com "/index.html" 301 "-" "curl/7.29.0" 127.0.0.1 - [15/Mar/2018:21:12:25 +0800] test.com "/xx2.jsdsdsad" 404 "-" "curl/7.29.0" 127.0.0.1 - [15/Mar/2018:21:15:33 +0800] test.com "/2.jsdsdsad" 404 "-" "curl/7.29.0"

    로그 에 기 록 된 2. jsdsad 를 사용자 정의 하 였 으 나 1. js 와 2. jpg 는 로그 에 계산 되 지 않 았 습 니 다. test. com. conf 의 location 정의 에 대응 합 니 다.
    3. 테스트 만 료 시간:
    [root@xavi test.com]# curl -x127.0.0.1:80 test.com/2.js -I //  js     ,       12  
    HTTP/1.1 200 OK
    Server: nginx/1.12.1
    Date: Thu, 15 Mar 2018 13:17:07 GMT
    Content-Type: application/javascript
    Content-Length: 14
    Last-Modified: Thu, 15 Mar 2018 13:08:00 GMT
    Connection: keep-alive
    ETag: "5aaa7030-e"
    Expires: Fri, 16 Mar 2018 01:17:07 GMT
    Cache-Control: max-age=43200
    Accept-Ranges: bytes

    max - age = 43200 대응 하 는 것 은 test. com. conf 에서 Expires 에 대한 정의 12 시간 입 니 다.

    좋은 웹페이지 즐겨찾기