2021-07-27nginx访问日志

转自:https://blog.csdn.net/wshsdm/article/details/80979415?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162029093516780261928240%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162029093516780261928240&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-5-80979415.pc_search_result_cache&utm_term=nginx%E6%9F%A5%E7%9C%8B%E8%AF%B7%E6%B1%82%E6%97%A5%E5%BF%97

查看nginx.conf文件

vim /usr/local/nginx/conf/nginx.conf

中间有一行是定义log的格式

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

  2. ' $host "$request_uri" $status'

  3. ' "$http_referer" "$http_user_agent"';

其中''包围起来的不算一行,只是为了美观才分行显示,分行显示就必须加上''号;

含义:
combined_realip:定义日志格式别名,默认为combined_realip,这里我会改为test001;
$remote_addr:客户端ip也就是出口公网ip;
$http_x_forwarded_for:代理服务器ip;
$time_local:服务器本地时间;
$host:访问主机名(域名);
$request_uri:访问的url地址;
$status:状态码,比如404;
$http_referer:referer;
$http_user_agent:也就是访问的浏览器类型,比如傲游7;

编辑虚拟web配置

 
  1. vim /usr/local/nginx/conf/vhost/test.com.conf

  2. 增加access_log /tmp/test.com.log combined_realip;

其中combined_realip是定义名称,记得与nginx.conf匹配;

检错与重新加载

 
  1. /usr/local/nginx/sbin/nginx -t

  2. /usr/local/nginx/sbin/nginx -s reload

访问与测试

curl -x127.0.0.1:80 test.com/1.html -I

访问成功200
查看日志

 
  1. cat /tmp/test.com.log

  2. 127.0.0.1 - [15/Mar/2018:03:13:28 +0800] test.com "/1.html" 200 "-" "curl/7.29.0"


日志切割

创建shell脚本

vim /usr/local/sbin/nginx_log_rotate.sh

代码

 
  1. #! /bin/bash

  2. ## 假设nginx的日志存放路径为/tmp/

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

  4. logdir="/tmp/"

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

  6. cd $logdir

  7. for log in `ls *.log`

  8. do

  9. mv $log $log-$d

  10. done

  11. /bin/kill -HUP `cat $nginx_pid`

执行脚本(可不执行)

sh -x /usr/local/sbin/nginx_log_rotate.sh
 
  1. [root@shu-test ~]# sh -x /usr/local/sbin/nginx_log_rotate.sh

  2. ++ date -d '-1 day' +%Y%m%d

  3. + d=20180314

  4. + logdir=/tmp/

  5. + nginx_pid=/usr/local/nginx/logs/nginx.pid

  6. + cd /tmp/

  7. ++ ls php_errors.log test.com.log

  8. + for log in '`ls *.log`'

  9. + mv php_errors.log php_errors.log-20180314

  10. + for log in '`ls *.log`'

  11. + mv test.com.log test.com.log-20180314

  12. ++ cat /usr/local/nginx/logs/nginx.pid

  13. + /bin/kill -HUP 1574

  14. [root@shu-test ~]#

任务计划执行脚本

crontab -e
 
  1. 写入脚本

  2. 0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh

意思:每天凌晨0点执行脚本/usr/local/sbin/nginx_log_rotate.sh

如何脚本删除log

find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm

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

编辑web虚拟文件

vim /usr/local/nginx/conf/vhost/test.com.conf

增加代码

 
  1. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

  2. {

  3. expires 7d;

  4. access_log off;

  5. }

  6. location ~ .*\.(js|css)$

  7. {

  8. expires 12h;

  9. access_log off;

  10. }

所有代码预览

 
  1. server

  2. {

  3. listen 80;

  4. server_name test.comtest1.comtest2.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. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

  11. {

  12. expires 7d;

  13. access_log off;

  14. }

  15. location ~ .*\.(js|css)$

  16. {

  17. expires 12h;

  18. access_log off;

  19. }

  20. access_log /tmp/test.com.log test;

  21. }

检错与重新加载

 
  1. /usr/local/nginx/sbin/nginx -t

  2. /usr/local/nginx/sbin/nginx -s reload

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值