• nginx日志相关优化安全


    一、编写脚本实现nginx access日志轮询

    配置日志切割脚本,如下:

    [root@nginx shell]# cat cut_nginx_log.sh
    #!/bin/bash
    #Author:Mr.Ding
    #Created Time:2018-08-27 07:19:30
    #Name:cut_nginx_log.sh
    #Description:
    Dateformat=`date +%Y%m%d`
    Basedir="/application/nginx"
    Nginxlogdir="$Basedir/logs"
    Logname="access_dmtest1"
    [ -d $Nginxlogdir ] && cd $Nginxlogdir || exit 1
    [ -f ${Logname}.log ] || exit 1
    /bin/mv ${Logname}.log ${Dateformat}_${Logname}.log		#将日志按日期改成前一天的名称;
    #$Basedir/sbin/nginx -s reload
    systemctl reload nginx									#重新加载nginx使得触发从新生成访问日志文件;
    

     脚本实现切割nginx的思想为将正在写入的nginx日志(access_dmtest1.log)改名为带日期的格式文件(20180827_access_dmtest1.log),然后平滑重新加载nginx,生成新的nginx日志(access_dmtest1.log)。

    把脚本加入计划任务:

    [root@nginx shell]# cat >>/var/spool/cron/root << EOF
    > #cut ngixn access log by dm 2018-8-27
    > 00 00 * * * /bin/sh /server/scripts/shell/cut_nginx_log.sh >/dev/null 2&1
    > EOF
    
    [root@nginx shell]# crontab -l
    #time sync by dm at 2018-8-20
    */5 * * * * /usr/sbin/ntpdate -u ntp.api.bz >/dev/null 2>$1
    #cut ngixn access log by dm 2018-8-27
    00 00 * * * /bin/sh /server/scripts/shell/cut_nginx_log.sh >/dev/null 2&1
    

     最终日志切割效果如下:

    [root@nginx logs]# ll
    总用量 32
    -rw-r--r-- 1 root root     0 8月  27 07:35 20180827_access_dmtest1.log
    -rw-r--r-- 1 root root     0 8月  27 07:35 access_dmtest1.log
    -rw-r--r-- 1 root root 14076 8月  27 04:41 access.log
    -rw-r--r-- 1 root root 10098 8月  27 06:36 error.log
    -rw-r--r-- 1 root root     5 8月  26 21:56 nginx.pid
    

     二、不记录不需要的访问日志

    在实际工作中,对于负载均衡器健康节点检查或某些特定文件(比如图片、js、css)的日志,一般不需要记录下来,因为在统计PV是是按照页面计算的,而且日志写入太频繁会消耗大量磁盘I/O,降低服务的性能。

    具体配置方法如下:

    在server标签内添加如下内容:
    
            location ~ .*.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ {
            access_log off;
            }
    

    三、访问日志的权限设置

    假如日志目录为/application/nginx/logs/,者授权方法如下:

    [root@nginx nginx]# chown -R root.root /application/nginx/logs/
    [root@nginx nginx]# chmod -R 700 /application/nginx/logs/
    
    [root@nginx nginx]# ll /application/nginx/logs/
    总用量 8592
    -rwx------ 1 root root 8779792 9月   1 01:15 access.log
    -rwx------ 1 root root    1786 9月   2 08:36 dmtest.log
    -rwx------ 1 root root    6785 9月   2 08:36 error.log
    -rwx------ 1 root root       4 9月   2 13:25 nginx.pid
    
  • 相关阅读:
    vue-cli3.X快速创建项目
    Oracle中exists替代in语句
    Java根据子节点递归父节点
    记一次拆分包裹的算法
    Ajax下载文件
    Spring Boot 调用 MongoRepository时报org.springframework.beans.factory.NoSuchBeanDefinitionException错误的解决办法
    ORACLE拼日期
    记一次wordpress安装过程中遇到的问题及解决办法
    bootstrap动态添加Tab标签页
    Intellij Idea 2016 配置Tomcat虚拟目录
  • 原文地址:https://www.cnblogs.com/Mr-Ding/p/9573620.html
Copyright © 2020-2023  润新知