`
wx1569466809
  • 浏览: 72246 次
文章分类
社区版块
存档分类
最新评论

Nginx访问日志、日志切割、静态文件管理

 
阅读更多

12.10 访问日志

Nginx日志格式:

[root@adailinux ~]# vim /usr/local/nginx/conf/nginx.conf
log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
    ' $host "$request_uri" $status'
    ' "$http_referer" "$http_user_agent"';

说明:
“combined_ realip”:日志格式名称;'$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

定义虚拟主机日志格式

定义虚拟主机的前提是在Nginx配置文件中设定日志格式,然后才能在虚拟主机中进行调用(格式名称)。

[root@adailinux ~]# cd /usr/local/nginx/conf/vhost/
[root@adailinux vhost]# ls
aaa.com.conf  test.com.conf

定义test.com.conf日志格式:  
[root@adailinux vhost]# vim test.com.conf  
 ……
 access_log /tmp/test.com.log combined_realip;
    #指定日志位置及格式

检查错误:
[root@adailinux vhost]# /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@adailinux vhost]# curl -x127.0.0.1:80 test.com
This is test.com
[root@adailinux vhost]# cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:15:09:54 +0800] test.com "/" 200 "-" "curl/7.29.0"

12.11 Nginx日志切割

因为Nginx没有自带的日志切割工具,所以需要借助系统日志切割命令或使用日志切割脚本。

日志切割脚本

为了方便管理,shell脚本统一保存位置:/usr/local/sbin/

[root@adailinux vhost]# vim /usr/local/sbin/nginx_log_rotate.sh

#! /bin/bash
d=`date -d "-1 day" +%Y%m%d` 
#定义切割时间(切割一天前的日志)
logdir="/tmp/"
#此处指定要切割的日志路径(该路径来自虚拟主机配置文件)
nginx_pid="/usr/local/nginx/logs/nginx.pid"
#调用pid的目的是执行命令:/bin/kill -HUP `cat $nginx_pid`
#该命令等价于命令:nginx -s reload(重新加载文件),确保与虚拟主机配置文件变更保持同步
#该地址来自nginx配置文件
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done
#此处使用通配进行循环,对所有复合条件的日志文件进行切割
/bin/kill -HUP `cat $nginx_pid`
#执行此命令进行重载生成新的日志文件来记录新的日志

执行该脚本:

[root@adailinux vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh
++ date -d '-1 day' +%Y%m%d
+ d=20170810
+ logdir=/tmp/
+ nginx_pid=/usr/local/nginx/logs/nginx.pid
+ cd /tmp/
++ ls test.com.log yum.log
+ for log in '`ls *.log`'
+ mv test.com.log test.com.log-20170810
+ for log in '`ls *.log`'
+ mv yum.log yum.log-20170810
++ cat /usr/local/nginx/logs/nginx.pid
+ /bin/kill -HUP 1251

说明: -x选项的作用是显示脚本执行过程。

注: 该脚本配合任务计划cron使用,定期进行切割和清理。

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

核心配置参数:

[root@adailinux vhost]# vim test.com.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    #匹配文件类型
    {
          expires      7d;
          #过期时间为7天
          access_log off;
          #不记录该类型文件的访问日志
    }
location ~ .*\.(js|css)$
    {
          expires      12h;
          #过期时间为12小时
          access_log off;
          #不记录该类型文件的访问日志
    }
    access_log /tmp/test.com.log combined_realip;
    #指定日志位置及格式

检测:

[root@adailinux vhost]# /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@adailinux vhost]# /usr/local/nginx/sbin/nginx -s reload

访问index.html:
[root@adailinux vhost]# !curl
curl -x127.0.0.1:80 test.com
This is test.com

[root@adailinux vhost]# !cat
cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:17:45:28 +0800] test.com "/" 200 "-" "curl/7.29.0"
即:有日志!

访问baidu.png文件:
[root@adailinux test.com]# curl -x127.0.0.1:80 test.com/baidu.png -I
HTTP/1.1 200 OK
Server: nginx/1.12.1
Date: Fri, 11 Aug 2017 09:47:57 GMT
Content-Type: image/png
Content-Length: 3706
Last-Modified: Tue, 01 Aug 2017 10:13:45 GMT
Connection: keep-alive
ETag: "59805459-e7a"
Expires: Fri, 18 Aug 2017 09:47:57 GMT
Cache-Control: max-age=604800
Accept-Ranges: bytes
说明:max-age=604800s=7天,即该文件缓存的过期时间为7天!

[root@adailinux test.com]# cat /tmp/test.com.log 
127.0.0.1 - [11/Aug/2017:17:45:28 +0800] test.com "/" 200 "-" "curl/7.29.0"
即:无该文件的访问日志!!!

转载于:https://my.oschina.net/1995blog/blog/1594232

分享到:
评论

相关推荐

    nginx安装和nginx日志切割

    日志切割是为了便于日志管理和存储,避免单个日志文件过大。以下是一个简单的日志切割方案: 1. **创建日志切割脚本**: 创建一个名为`logrotate.conf`的文件,例如在`/etc/logrotate.d/nginx`目录下,内容如下: ...

    Nginx配置负载均衡、动静分离、请求日志打印、日志切割、压缩、删除.md

    ### Nginx 配置详解:负载均衡、动静分离、请求日志打印、日志切割与管理 #### 一、Nginx配置负载均衡 **负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性...

    Nginx 访问日志增长暴增出现尖刀的详细分析.rar

    2. **错误配置**:Nginx的日志配置可能存在错误,例如,未正确配置日志切割,导致所有日志都写入同一个文件,而不是按日期或大小滚动。确保`logrotate`配置正确,定期清理和归档旧日志,防止单个日志文件过大。 3. ...

    使用Awstats分析Nginx的访问日志.doc

    同时,还需要设置 Nginx 自动切割日志文件,以保持日志管理的高效性。 配置 Nginx 自动切割日志的方法如下: 首先,你可以编写一个 Shell 脚本(例如 `logcron.sh`),用于移动旧日志文件并创建新的日志文件,然后...

    Nginx 应用技术指南Nginx Tips【第二版】.zip

    - **日志切割**:学习自动切割日志文件,防止单个日志文件过大。 8. **性能调优** - **性能指标**:理解影响Nginx性能的关键因素,如并发连接数、内存使用等。 - **参数调整**:根据服务器硬件配置和业务需求,...

    nginx-1.19.9_win服务启动_分割日志(1).rar

    该压缩包文件“nginx-1.19.9_win服务启动_分割日志(1).rar”主要关注的是在Windows环境下使用Nginx 1.19.9版本的配置和管理,特别是如何启动Nginx作为服务以及实现日志分割功能。Nginx是一款高性能的HTTP和反向代理...

    搭建Nginx服务器全套资料,包含所需文件、源码、详细文档等

    Nginx的日志默认保存在`/var/log/nginx`目录下,可以根据需求自定义日志格式、日志切割和日志级别,以便于分析服务器性能和排查问题。 8. **服务优化**: 为了提高Nginx性能,可以优化工作进程模型(如worker_...

    Nginx日志管理介绍

    在管理Nginx日志时,会发现Nginx日志文件不具备自动轮转(rotate)功能,因此需要手动配置日志切割以避免日志文件过大导致管理不便。通常的做法是编写一个日志切割脚本,该脚本首先重命名当前日志文件。重命名后,...

    nginx-1.7.2 + cronolog-1.6.2

    2. **静态文件处理**:Nginx 在处理静态文件(如 HTML、CSS、JavaScript)方面非常高效,能减轻后端应用服务器的压力。 3. **缓存功能**:Nginx 可以缓存常用内容,提高响应速度。 4. **URL 转发与重写**:通过配置...

    Nginx最佳实用培训-万达IT内部培训资料

    六、Nginx日志管理 1. 日志格式:自定义日志格式,记录客户端请求信息,便于分析和故障排查。 2. 日志切割:通过logrotate工具定期切割日志文件,避免单个日志文件过大。 七、Nginx安全配置 1. 防止DDoS攻击:限制...

    Nginx指南最新版

    - **Nginx日志切割**:为了便于管理和分析,Nginx的日志文件需要定期切割和归档。 - **Nginx logrotate处理**:使用logrotate工具自动化日志文件的切割和清理过程,保持日志系统的高效运行。 - **Nginx and ...

    AWStats+JAWStats快速构建Nginx日志分析系统

    此外,考虑到网站的流量较大,为了提高服务器性能和减少日志文件大小,建议每天进行一次 Nginx 日志的切割。下面是一个示例命令: ```bash vim /etc/logrotate.d/nginx /usr/local/nginx/logs/*.log { daily ...

    nginx-1.6.2.tar.gz nginx-1.6.2下载

    - **日志优化**:日志级别设置、日志格式调整和日志切割有助于性能优化和故障排查。 6. **Nginx 和其他服务器的比较** - **与Apache对比**:Nginx 通常在高并发下表现更好,而Apache在动态内容处理上更强大,两者...

    nginx-cookbook2018中文版.rar

    9. **日志管理**:Nginx的日志格式、日志切割和日志分析,对于监控和调试系统性能至关重要。 10. **模块扩展**:Nginx有许多第三方模块,如 ngx_lua、ngx_pagespeed、ngx_cache_purge 等,可进一步增强其功能。 ...

    实战Nginx取代Apache的高性能Web服务器_文字版

    4. 静态文件处理:通过`root`或`alias`指令设置静态文件路径,Nginx能高效地发送静态资源。 5. URL重写:使用`rewrite`指令进行URL转换,增强网站路由功能。 三、反向代理与负载均衡 1. 反向代理:Nginx作为前端...

    LNMP环境相关配置Nginx1

    本篇文章主要关注Nginx的相关配置,包括默认虚拟主机设置、用户认证、域名重定向、访问日志管理、静态文件处理以及防盗链配置。 1. **默认虚拟主机**:在Nginx中,虚拟主机是基于域名来区分不同的网站服务。默认...

    Nginx手册(手册中文版)

    - **日志切割**:通过定时任务或配置指令,可以自动分割并归档日志文件。 8. **性能优化** - **超时设置**:调整连接超时、读写超时等参数,避免资源浪费。 - **最大连接数**:设置最大并发连接数,平衡资源使用...

    Nginx 应用技术指南

    日志文件会随着时间的增长而变得越来越大,可以通过日志切割工具定期分割日志文件。 **12.2 Nginx logrotate处理** logrotate是一个常用的日志管理工具,可以用来自动切割、压缩和删除旧的日志文件。 **12.3 Nginx...

    Nginx教程从入门到精通.zip

    教程将介绍如何配置日志格式、日志切割和日志访问权限。 10. **性能优化**:探讨如何调整Nginx的性能设置,包括最大连接数、超时设置等,以适应不同场景的需求。 通过《Nginx教程从入门到精通.pdf》的学习,你将...

    nginx-1.16.1

    在日志管理上,Nginx 1.16.1 可能提供了更灵活的日志格式和日志切割功能,便于系统管理员分析服务器性能和跟踪问题。通过自定义日志格式,可以收集更多关于用户行为和服务器状态的信息。 在配置方面,1.16.1 版本...

Global site tag (gtag.js) - Google Analytics