nginx上匹配特定请求,并打印日志

当遇到华为原生浏览器访问帖子页图片被防盗链拦截的问题时,通过在Nginx上自定义日志格式,利用map指令创建变量,过滤并打印特定请求,如/p/12345.jpg,以分析referer信息。发现华为旧版本浏览器未携带referer,升级后问题解决,同时其他如Nokia7Plus和GOME S1的部分浏览器也有类似问题。
摘要由CSDN通过智能技术生成

背景:用户报障,在华为原生浏览器访问帖子页,图片会被防盗链拦截。而在其他浏览器不会有这个问题。

防盗链的设置跟referer相关。一开始想的是通过手机连接fiddler代理,观察图片请求带的referer是什么。但因为触屏版用了https,而同事手上能重现此问题的华为手机又死活安装不上fiddler的证书,所以没法通过fiddler来捕捉请求。

因为访问图片要先经过Nginx,所以想着在Nginx上打印出其中一张图片的访问请求,查看其referer。但因为访问量有点大,不适合打出所有访问日志。

 

解决方法:
0、自定义一个访问日志格式;
1、通过Nginx的map,创建一个变量$loggable。该变量默认值为0,只有$request为特定的请求时,其值才为1;
2、在server中配置access_log的时候,带上if=$loggable条件。

 

例:只打印出/p/12345.jpg的请求,具体配置如下:

0、自定义日志格式:

log_format mylogformat '"$remote_addr" "[$time_local]" "$request_method" '
                      '"$uri" "$request_uri" "$request_time" "$status" "$body_bytes_sent"'
                       '"$http_referer" "$http_x_forwarded_for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值