博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LNMP架构之访问日志、日志切割、静态文件不记录及过期时间设置
阅读量:6565 次
发布时间:2019-06-24

本文共 4353 字,大约阅读时间需要 14 分钟。

hot3.png

本文索引:

  • Nginx访问日志
  • Nginx日志切割
  • 静态文件不记录日志和过期时间

Nginx访问日志

  • 修改nginx配置文件
[root@localhost vhost]# vim /usr/local/nginx/conf/nginx.conf# 搜索:/log_format# 在nginx中以;作为一行的结尾,所以下列代码时一个配置# 格式:“log_format 日志格式名 格式;”log_format test '$remote_addr $http_x_forwarded_for [$time_local]'    ' $host "$request_uri" $status'    ' "$http_referer" "$http_user_agent"';

格式内使用的变量说明如下:

变量名 说明
$remote_addr 客户端ip(公网ip)
$http_x_forwarded_for 代理服务器的ip
$time_local 服务器本地时间
$host 访问主机名(域名)
$request_uri 访问的url地址
$status 状态码
$http_referer referer
$http_user_agent user_agent
  • 在虚拟主机内定义日志路径
# 在server块内插入access_log /tmp/test.com.log test;# 格式为access_log 日志存放路径 日志格式名(主配置文件内定义的)
  • 重启服务
[root@localhost vhost]# /usr/local/nginx/sbin/nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful[root@localhost vhost]# /usr/local/nginx/sbin/nginx -s reload
  • 验证效果
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com[root@localhost vhost]# curl -x 127.0.0.1:80 test2.com/index.php[root@localhost vhost]# curl -x 127.0.0.1:80 test2.com/index1.php# 成功记录[root@localhost vhost]# cat /tmp/test.com.log 127.0.0.1 - [03/Jan/2018:19:05:22 +0800] test.com "/" 401 "-" "curl/7.29.0"127.0.0.1 - [03/Jan/2018:19:05:34 +0800] test2.com "/index.php" 301 "-" "curl/7.29.0"127.0.0.1 - [03/Jan/2018:19:05:39 +0800] test2.com "/index1.php" 301 "-" "curl/7.29.0"

Nginx日志切割

nginx没有apache内的rotatelog日志切割命令,我们可以通过自定义shell脚本来实现日志切割的功能。

  • 创建自定义脚本
[root@localhost vhost]# vim /usr/local/sbin/nginx_log_rotate.sh[root@localhost vhost]# cat /usr/local/sbin/nginx_log_rotate.sh#!/bin/bash# date +%Y%m%d 显示的是今天的日期# 加上 -d "-1 day" 显示的是昨天的日期d=`date -d "-1 day" +%Y%m%d`# 定义日志存放的路径,虚拟主机配置文件内定义logdir="/tmp"# pid文件nginx_pid="/usr/local/nginx/logs/nginx.pid"cd $logdir# 在日志存放路径下循环更改日志文件名for log in `ls *.log`do    mv $log $log-$ddone# 在不关闭进程前提下重启,等价于nginx -s reload/bin/kill -HUP `cat $nginx_pid`
  • 脚本测试
# sh -x 可以显示脚本执行的过程[root@localhost vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh ++ date -d '-1 day' +%Y%m%d+ d=20180102+ logdir=/tmp+ nginx_pid=/usr/local/nginx/logs/nginx.pid+ cd /tmp++ ls test.com.log+ for log in '`ls *.log`'+ mv test.com.log test.com.log-20180102++ cat /usr/local/nginx/logs/nginx.pid+ /bin/kill -HUP 1299# 查看是否实现功能[root@localhost vhost]# ls /tmp/*.log*/tmp/test.com.log  /tmp/test.com.log-20180102
  • 配合crontab命令周期性执行
[root@localhost vhost]# crontab -e0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

静态文件不记录日志和过期时间

  • 修改虚拟主机配置文件
[root@localhost vhost]# vim /usr/local/nginx/conf/vhost/test.com.conf # ~ 匹配后续的正则表示# 使用\转义.,匹配.jpg等文件location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$	{	    # expires设置过期时间	    expires	7d;	    	    # 关闭日志记录	    access_log off;	}location ~ .*\.(css|js)$	{	    expires	12h;	    access_log off;	}
  • 测试
  1. 验证静态文件不记录日志
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/index.php401 Authorization Required

401 Authorization Required


nginx/1.12.2
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/1.gifjhasdifhoai[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/2.jsabdsuofghan# gif/js文件日志未记录访问日志[root@localhost vhost]# cat /tmp/test.com.log127.0.0.1 - [03/Jan/2018:19:36:25 +0800] test.com "/index.php" 401 "-" "curl/7.29.0"
  1. 验证过期时间
  • 测试gif的过期时间
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/1.gif -IHTTP/1.1 200 OKServer: nginx/1.12.2Date: Wed, 03 Jan 2018 11:36:52 GMTContent-Type: image/gifContent-Length: 12Last-Modified: Wed, 03 Jan 2018 11:35:29 GMTConnection: keep-aliveETag: "5a4cc001-c"Expires: Wed, 10 Jan 2018 11:36:52 GMT# 信息内显示max-age时间Cache-Control: max-age=604800Accept-Ranges: bytes
  • 测试js文件的过期时间
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/2.js -IHTTP/1.1 200 OKServer: nginx/1.12.2Date: Wed, 03 Jan 2018 11:36:58 GMTContent-Type: application/javascriptContent-Length: 12Last-Modified: Wed, 03 Jan 2018 11:35:44 GMTConnection: keep-aliveETag: "5a4cc010-c"Expires: Wed, 03 Jan 2018 23:36:58 GMT# 信息内显示max-age时间Cache-Control: max-age=43200Accept-Ranges: bytes
  • 测试PHP文件,没有max-age信息
[root@localhost vhost]# curl -x 127.0.0.1:80 test.com/index.phpHTTP/1.1 200 OKServer: nginx/1.12.2Date: Wed, 03 Jan 2018 11:46:58 GMTContent-Type: application/octet-streamContent-Length: 19Last-Modified: Wed, 03 Jan 2018 11:36:44 GMTConnection: keep-aliveETag: "5a4e1572-13"Accept-Ranges: bytes

转载于:https://my.oschina.net/LuCastiel/blog/1602479

你可能感兴趣的文章
Unix调试的瑞士军刀:lsof(转)
查看>>
dns相关内容
查看>>
JavaScript骚操作
查看>>
MySQL的主从复制与读写分离原理
查看>>
luaCPU性能测试
查看>>
mysql优化
查看>>
【批处理】for循环中产生不同的随机数
查看>>
Gradle -help
查看>>
/etc/security/limits.conf
查看>>
js 框架
查看>>
android 实现ListView中添加RaidoButton单选
查看>>
WS-Security 中文问题&Stax(Streaming API for XML) (二)
查看>>
dos 分页显示及查看应用程序占用端口
查看>>
Oracle数据库:启动操作
查看>>
使用树莓派部署python flask 环境
查看>>
限制VLAN之间互访实例
查看>>
rsync启动关闭shell脚本
查看>>
学习网页开发与网站设计必看的【代码逆袭】书
查看>>
Python 中文编码
查看>>
ubuntu-14.04编译安装PostgreSQL
查看>>