Nginx日志文件的配置

    xiaoxiao2021-03-25  111

    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;

    转载请注明原文地址: https://ju.6miu.com/read-24184.html

    最新回复(0)