nginx日志[配置解释]

经常使用nginx,但是对nginx中的日志配置了解的不多,最近简单的学习了一下,在此简略的记录下。

nginx基础配置如下:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

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

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

在此主要记录下 error_logaccess_log

error_log:

nginx配置中第三行“/var/log/nginx/error.log”表示nginx的error日志记录的地址配置,“notice”表示错误级别。

error_log的级别分为 debug, info, notice, warn, error, crit  我用的nginx版本为1.20.2,错误级别默认为notice。crit 记录的日志最少,而debug记录的日志最多。如果你的nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富。

access_log:

配置中的access_log,记录的是nginx的访问日志,路径是“/var/log/nginx/access.log”,“main”是定义的格式名称,要和log_format后面的保持一致。

[例:log_format后面是"aaa",那么access_log最后面就得是"aaa"]

log_format用来设置日志格式,要注意log_format指令设置的名称在配置文件中是不能重复的。默认的这些参数代表的意义如下:

1.$remote_addr用于记录客户端IP地址;
2.$remote_user用于记录远程客户端用户名称;
3.$time_local用于记录访问时间与时区;
4.$request用于记录请求URL与HTTP协议内容;
5.$status用于记录请求状态,例:成功时状态为200;
6.$body_bytes_sent用于记录发送客户端的文件主体内容大小;
7.$http_referer用于记录是从哪个页面链接访问过来的;
8.$http_user_agent用于记录客户浏览器的相关信息。
9.$http_x_forwarded_for:X-Forwarded-For 是一个HTTP拓展头,起初在 RFC2616 (HTTP/1.1) 中并未定义,但后来被广泛用于表示客户端真实IP。后来在 RFC7239 (Forwarded HTTP Extension) 中又提供了标准的 Forwarded 头,使用 X-Forwarded-For 来提取真实IP,成了事实上的标准。

需要注意的是:X-Forwarded-For 存储了客户端IP以及请求链路上各代理IP,假设请求依次通过 proxy1、proxy2 后抵达服务,那 X-Forwarded-For 的值为:客户端IP, proxy1 IP, proxy2 IP,IP之间以逗号隔开。当使用 nginx 做反向代理时,通过 HttpServletRequest 的 getRemoteAddr() 得到的是最后一个代理所在机器的IP,而非客户端的真实IP

 我们可以对access_log做配置,记录更多的信息。可以参照nginx官方给出的access_log配置文档,里面有nginx支持的变量。http://nginx.org/en/docs/http/ngx_http_log_module.html#access_loghttp://nginx.org/en/docs/http/ngx_http_log_module.html#access_log

配置完毕后,先用

nginx -tc /etc/nginx/nginx.conf

检查下语法,没问题重载nginx服务

nginx -s reload

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值