Nginx日志文件的配置

Nginx的日志文件,默认在Nginx程序安装目录的logs二级目录下。

与Nginx日志相关的指令有两条

log_format,用来设置日志的记录格式。

Access_log,用来指定日志文件的存放路径、格式和缓存大小。

这两条指令在Nginx配置文件中,可以在http{……}之间,也可以在虚拟主机之间,即server{……}之间。

Log_format指令

用来设置日志文件的记录格式,语法如下

log_format name format[format ……]

其中,name表示定义的格式名称,format,表示定义的格式样式。

Log_format有一个默认的、无须设置的combined日志格式设置,相当于Apache的combined日志格式,如下

log_format combined '$remote_addr - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent'
'"$http_referer" "$http_user_agent"';

也可以自定义日志的记录格式,注意,log_format指令设置的name名称,在Nginx配置文件中,是不能重复的。

如果,将Nginx服务器作为Web服务器,唯一负载均衡设备、Squid、Nginx反向代理之后,就不能获取到客户端的真实IP地址了。

原因,经过反向代理之后,由于在客户端和Web服务器之间,增加了中间层,因此,Web服务器无法直接拿到客户端的IP,通过$remote_addr变量拿到的是反向代理服务器的IP地址。

但是,反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用以记录原有的客户端IP地址和原有客户端请求的服务器地址。

此时,需要用log_format指令来设置日志格式,让日志记录X-Forwarded-For信息中的IP地址,即客户的真实IP。

比如,创建一个名为mylogformat的日志格式,再用$http_x_forwarded_for变量记录用户的X_Forwarded-For IP地址。

log_format mylogformat '$http_x_forwarded - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent'
'"$http_referer" "$http_user_agent"';

参数说明

$remote_addr——用来记录IP地址

$http_x_forwarded_for——用来记录IP地址

$remote_user——用来记录远程客户端用户名称

$time_local——用来记录访问时间与时区

$request——用来记录请求URL与http协议

$status——用来记录请求状态,比如,成功时状态为200,页面找到时状态为404等

$body_bytes_sent——用来记录发送给客户端的文件主体内容大小

$http_referer——用来记录是从哪个页面链接访问过来的

$http_user_agent——用来记录客户端浏览器的相关信息

Access_log指令

指定日志文件存放路径,语法如下

access_log path [format[buffer=size | off]]

参数说明

path——表示日志文件的存放路径。

Format——表示使用log_format指令设置的日志格式的名称。

Buffer=size——表示设置内存缓冲区的大小,比如,可以设置buffer=32k。

如果不记录日志,可以使用如下指令关闭日志记录

access_log off;

Nginx日志文件的配置相关推荐

  1. 使用logrotate管理nginx日志文件

    本文转载自:http://linux008.blog.51cto.com/2837805/555829 描述:linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日 ...

  2. Nginx日志文件的切割

    Nginx日志文件的切割 生产环境中,由于访问日志文件增长速度非常快,日志太大会严重影响服务器效率. 同时,为了方便对日志进行分析和计算,需要对日志文件进行定时切割. 定时切割方式,包括按月切割.按天 ...

  3. logrotate管理nginx日志文件

    转自:http://linux008.blog.51cto.com/2837805/555829/ 描述:linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日常工 ...

  4. Nginx 日志文件切割

    为什么80%的码农都做不了架构师?>>>    偶然发现access.log有21G大,所以将其切割. Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点 ...

  5. 使用Python解析nginx日志文件

    项目的一个需求是解析nginx的日志文件. 简单的整理如下: 日志规则描述 首先要明确自己的Nginx的日志格式,这里采用默认Nginx日志格式: log_format main '$remote_a ...

  6. log4j日志文件模板配置整理

    log4j日志文件模板配置整理 模板一 模板二 模板三 log4j配置参数介绍 备注 模板一 以xml文件配置,按照不同的日志级别输出到不同的文件中 <?xml version="1. ...

  7. java 日志过期删除吗,log4j2 自动删除过期日志文件的配置及实现原理

    日志文件自动删除功能必不可少,当然你可以让运维去做这事,只是这不地道.而日志组件是一个必备组件,让其多做一件删除的工作,无可厚非.本文就来探讨下 log4j 的日志文件自动删除实现吧. 0.自动删除配 ...

  8. Nginx日志文件清理

    Nginx日志文件清理 创建定时清理nginx日志脚本 vi /home/adam/nginx/logs/nginx_timing_log.sh 脚本内容 #!/bin/bash #LOGS_PATH ...

  9. Linux下自动分割Nginx日志文件(三)-----Logrotate

    logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循).压缩以及删除旧的日志文件.例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月 ...

最新文章

  1. mysql 事务 注意 优化_MySQL日常SQL优化注意事项
  2. iOS常用第三方开源框架和优秀开发者博客等
  3. dfinity什么时候发币_区块链3.0的Dfinity揭秘
  4. TensorFlow 2.0 - TFRecord存储数据集、@tf.function图执行模式、tf.TensorArray、tf.config分配GPU
  5. 用Flink取代Spark Streaming!知乎实时数仓架构演进
  6. cpython教程_python高性能扩展工具-cython教程1快速入门
  7. 打开Visual Studio 2010,左下角显示加载工具箱内容
  8. android shell 获取当前正在运行的Activity
  9. centos7修复libcrypto.so.10缺失的问题,导致ssh无法运行
  10. 引导扇区维护工具linux,bootice引导扇区维护工具下载
  11. 64K方法数限制原理与解决方案总结
  12. CLM陆面过程模式实践技术应用
  13. python输入一个包含若干自然数的列表_Python练习题
  14. 2022android自定义文本路径选择器java教程
  15. 多种方法进行去基线处理
  16. uma是什么意思_UMA是什么意思?
  17. 自定义Dialog 实现 仿网易云音乐的隐私条款声明弹框
  18. 阳光宽频加密算法破解,找出隐藏真实地址。
  19. 荒岛求生html5母狼攻,荒岛求生各资源作用及获取方法详解
  20. Bias Variance Tradeoff

热门文章

  1. [LintCode] Trailing Zeroes 末尾零的个数
  2. 我的第一份vPlan衍变路线
  3. starling教程-纹理(Texture)
  4. 一个好的软件开发人员的标准
  5. linux 毕业设计 apache,毕业论文基于Linux的Apache服务器的设计与设计6喜欢就下吧...
  6. 区块链BaaS云服务(29) 溪塔科技 CITA-Cloud
  7. (chap3 数据链路) 数据链路概览
  8. 现代密码学2.2、2.3--由“一次一密”引出具有完美安全的密码方案共同缺点
  9. [密码学] 基础知识
  10. ARMV8/ARMV9指令集概述(翻译)