Nginx日志文件的配置

来源:互联网 发布:淘宝uv价值公式 编辑:程序博客网 时间:2024/06/01 08:40

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;

0 0
原创粉丝点击