天天看點

Nginx通路日志、Nginx日志切割、靜态檔案不記錄日志和過期時間

Nginx通路日志

    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

    ' $host "$request_uri" $status'

    ' "$http_referer" "$http_user_agent"';

combined_realip:日志名稱

其餘為日志内容

$remote_addr 用戶端IP(公網IP)

$http_x_forwarded_for 代理伺服器的IP

$time_local 伺服器本地時間

$host 通路主機名(域名)

$request_uri 通路的URL位址

$status 狀态碼

$http_referer referer

$http_user_agent user_agent

[root@centos7 ~]# vim /usr/local/nginx/conf/vhost/test.com.conf

server

{

    listen 80;

    server_name test.com  test2.com test3.com;

    index index.html index.htm index.php;

    access_log /tmp/test.com.log combined_realip;

驗證:

[root@centos7 ~]# tail /tmp/test.com.log 

127.0.0.1 - [10/Nov/2017:17:48:20 +0800] test.com "/" 401 "-" "curl/7.29.0"

127.0.0.1 - [10/Nov/2017:17:48:30 +0800] test.com "/index.php" 200 "-" "curl/7.29.0"

Nginx日志切割

日志切割腳本

[root@centos7 shell]# vi nginx_log_rotate.sh

#! /bin/bash

d=`date -d "-1 day" +%Y%m%d`

#定義切割時間(切割一天前的日志)

logdir="/tmp/"

#此處指定要切割的日志路徑(該路徑來自虛拟主機配置檔案)

nginx_pid="/usr/local/nginx/logs/nginx.pid"

#調用pid的目的是執行指令:/bin/kill -HUP `cat $nginx_pid`

#該指令等價于指令:nginx -s reload(重新加載檔案)

cd $logdir

for log in `ls *.log`

do

    mv $log $log-$d

done

/bin/kill -HUP `cat $nginx_pid`

#執行此指令進行重載生成新的日志檔案,與kill -usr1 一樣

靜态檔案不記錄日志和過期時間

驗證訪圖檔的時候:

[root@centos7 test.com]# curl -x127.0.0.1:80 test.com/baidu.png -I

HTTP/1.1 200 OK

Server: nginx/1.12.1

Date: Fri, 10 Nov 2017 10:01:03 GMT

Content-Type: image/png

[root@centos7 test.com]# curl -x127.0.0.1:80 test.com/index.php

沒記錄日志

[root@centos7 test.com]# tail /tmp/test.com.log 

127.0.0.1 - [10/Nov/2017:18:02:38 +0800] test.com "/index.php" 200 "-" "curl/7.29.0"

問題:curl通路時間不對,但是系統時間是對的?

[root@centos7 test.com]#  curl -x127.0.0.1:80 test.com/baidu.png -I

Date: Wed, 15 Nov 2017 02:58:15 GMT

[root@centos7 test.com]# date

Wed Nov 15 10:58:32 CST 2017

本文轉自 iekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/1981934,如需轉載請自行聯系原作者