13. Nginx 액세스 로그 & 로그 절단 & 정적 파일
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 시간 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.