Nginx日志相关优化与安全

参考资料

[1]. 跟老男孩学Linux运维:Web集群实战,老男孩

安装过程

编写脚本脚本实现Nginx access日志轮询

Nginx目前没有类似Apache的通过cronlog或者rotatelog对日志分割处理的能力,但是,运维人员可以通过利用脚本开发、Nginx的信号控制功能或reload重新加载,来实现日志自动切割,轮询。

1.1 配置日志切割脚本

mkdir -p /server/scripts/
cd /server/scripts/
vim cut_nginx_log.sh

#将日志按日志日期改成前一天的名称
cd /application/nginx/logs &&\
/bin/mv www_access.log www_access_$(data +%F -d -1dy).log 

#重新加载nginx使得重新生成访问日志文件
/application/nginx/sbin/nginx -s reload         

将这段脚本保存后加入到定时任务,设置每天凌晨0点进行切割日志

crontab -e
###cut nginx access log
00 00 * * * /bin/sh /server/scripts/cut_nginx.log.sh >/dev/null 2>&1
解释:每天0点执行cut_nginx_log.sh脚本,>/dev/null 2>&1 表示任何输出都不要,将脚本的输出重定向到空。

不记录不需要的访问日志

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

具体配置如下:

 location ~.*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ {
        access_log off; 
}

这里用location标签匹配不记录日志的元素扩展名,然后关掉了日志。

访问日志的权限设置

假如日志目录为/app/logs,则授权方法为:

chown -R root.root /app/logs
chmod -R 700 /app/logs

不需要在日志目录上给Nginx用户读或写许可,否则会造成安全隐患。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值