LNMP架构(nginx访问日志,Nginx日志切割,静态文件不记录访问日志)

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

一、nginx访问日志

[root@lnmp ~]# vim /usr/local/nginx/conf/nginx.conf           (修改Nginx的配置文件)

搜索/log_format  (log_format后面跟的combined_realip是一个自定义名字,用来定义整个日志格式,这里写什么,虚拟配置文件后面就可以加上什么,我这里将combined_realip修改为lty)

   log_format lty 'remoteaddrhttp_x_forwarded_for [$time_local]'

    ' host"request_uri" $status'

    ' "httpreferer""http_user_agent"';

1.png

[root@lnmp ~]# vim /usr/local/nginx/conf/vhost/test.com.conf           (修改虚拟机文件)

access_log /tmp/test.com.log lty;                   (增加一行,lty是刚在主配置文件里写的日志格式)

 

检查语法错误并且重新加载配置文件:

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -s reload


检测;

[root@lnmp ~]# curl -x127.0.0.1:80 test2.com/admin/1.php -I

HTTP/1.1 301 Moved Permanently

Server: nginx/1.8.0

Date: Thu, 14 Dec 2017 05:32:49 GMT

Content-Type: text/html

Content-Length: 184

Connection: keep-alive

Location: http://test.com/admin/1.php


[root@lnmp ~]# curl -x127.0.0.1:80 test.com/admin/1.php 

touch file.php


[root@lnmp ~]# cat /tmp/test.com.log                  (查看日志)

127.0.0.1 - [14/Dec/2017:13:32:49 +0800] test2.com "/admin/1.php" 301 "-" "curl/7.29.0"

127.0.0.1 - [14/Dec/2017:13:33:10 +0800] test.com "/admin/1.php" 200 "-" "curl/7.29.0"


二、nginx的日志切割

nginx日志切割

nginx没有像httpd一样,自己带有切割工具,则需要借助系统的切割工具或者自己写一个切割的脚本

[root@lnmp ~]# vim /usr/local/sbin/nginx_log_rotate.sh                    (写一个自主切割的脚本)

#!/bin/bash

#假设nginx的日志存放路径为/data/logs/

d=`date -d "-1 day" +%Y%m%d`                   (生成一个年月日day -1的日期,(昨天的日期))

logdir="/tmp/"                          (定义logdir为/tmp)

nginx_pid="/usr/local/nginx/logs/nginx.pid"        (给Nginx.pid定义一个变量,为下面命令做准备)

cd $logdir                               (进入到logdir中)

for log in `ls *.log`                        (做一个for循环,ls当前目录下所有以.log文件为结尾的文件)

do                                       

    mv loglog-$d                         (把以log为结尾的日志名都改成log---日期)

done

/bin/kill -HUP `cat $nginx_pid`                 (重新启动nginx_pid进程,重新生成一个test.com.log文件)      


执行脚本:

[root@lnmp ~]# sh -x /usr/local/sbin/nginx_log_rotate.sh 

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

+ d=20171213

+ 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-20171213

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

+ /bin/kill -HUP 1157


[root@lnmp ~]# ll /tmp/

srwxrwxrwx. 1 mysql mysql  0 12月 14 11:56 mysql.sock

srw-rw-rw-. 1 root  root   0 12月 14 11:55 php-fcgi.sock

drwx------. 3 root  root  17 12月 14 11:55 systemd-private-50670dd070a94a6f85f2f82feb779c46-vmtoolsd.service-vZTOZz

-rw-r--r--. 1 root  root   0 12月 14 13:54 test.com.log

-rw-r--r--. 1 root  root   0 12月 14 13:54 test.com.log-20171213


最后一步,添加任务计划:

[root@lnmp ~]# crontab -e

no crontab for root - using an empty one


0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh        (添加一行)


三、静态文件不记录日志

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

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$    (以gif,jpg,jpeg,png,bmp,swf结尾的文件保存7天,并且不记录日志)

    {

          expires      7d;

          access_log off;

    }

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

    {

          expires      12h;   (以js,css结尾的文件保存12小时,并且不记录日志)

          access_log off;

    }

检查语法并且重新加载配置文件:

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

[root@lnmp ~]# /usr/local/nginx/sbin/nginx -s reload


证明:分别访问了以gif,js,html为结尾的3个文件,发现日志里只记录了html为结尾的访问信息。

[root@lnmp ~]# curl -x127.0.0.1:80 test.com/1.gif 

dasdasdafasdfaf

[root@lnmp ~]# curl -x127.0.0.1:80 test.com/2.js 

fdasfsadfasdfzczv

[root@lnmp ~]# curl -x127.0.0.1:80 test.com/index.html 

test.com

[root@lnmp ~]# cat /tmp/test.com.log

127.0.0.1 - [14/Dec/2017:14:30:40 +0800] test.com "/index.html" 200 "-" "curl/7.29.0"











本文转自 小新锐 51CTO博客,原文链接:http://blog.51cto.com/13407306/2057946,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
234
分享
相关文章
阿里云个人博客外网访问中断应急指南:从安全组到日志的七步排查法
1. 检查安全组配置:确认阿里云安全组已开放HTTP/HTTPS端口,添加规则允许目标端口(如80/443),授权对象设为`0.0.0.0/0`。 2. 本地防火墙设置:确保服务器防火墙未阻止外部流量,Windows启用入站规则,Linux检查iptables或临时关闭防火墙测试。 3. 验证Web服务状态:检查Apache/Nginx/IIS是否运行并监听所有IP,使用命令行工具确认监听状态。 4. 测试网络连通性:使用外部工具和内网工具测试服务器端口是否开放,排除本地可访问但外网不可的问题。 5. 排查DNS解析:确认域名A记录指向正确公网IP,使用`ping/nslookup`验证解析正
38 2
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
171 90
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
1084 8
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
285 3
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
275 60
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
367 60
nginx开启局域网https访问
【10月更文挑战第22天】为了调试WebRTC功能,需要在局域网内搭建HTTPS协议。具体步骤包括:在已部署Nginx和安装OpenSSL的环境中生成私钥、证书签名请求和自签名证书;将生成的文件放置到Nginx的证书目录并修改Nginx配置文件,最后重启Nginx服务。注意,自签名证书不受第三方机构认可,如需正式使用,需向CA申请签名。
154 2
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
73 4
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
92 3
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等