nginx专题-内置变量转义

上一篇介绍入门安装,nginx的配置文件使用的都是默认配置。helloworld是没什么问题。

但是default  nginx.conf是无法满足每个服务的要求。最简单的例子就是中文问题。默认的配置你试试,中文会被转义。

例如这样的请求:

http://192.168.39.120/nginx/ChineseCharacterTest?ChineseCharacter=中文

日志中输出的就是:

Nginx日志中文测试

在日志数据分析的时候就会很麻烦了!

那么,在nginx 1.11.8之后的版本,在log_format 配置的时候可以加上 escape=json,这样中文就不会被转义了

nginx日志中文不转义效果

肯定会有同学想,我们线上现在用的nginx版本低于1.11.8,有没有什么别的办法。办法当然是有的,拿来nginx的源码自己改,改完编译之后用。之前遇到过一个做过很多项目的前辈,经验十分丰富。他说过这样一句话:“如果可以通过升级第三方提供的服务来优化自己的产品,那么这将是自己产品升级方案中,付出代价最小的方案”(其实就是把锅甩出去)。

但是会有新的问题出现。nginx 默认的分割符号用空格。请求参数内容中如果出现空格,那么在分割的时候就会有问题。所以还需要自己定义自己的分割符号。例如用|:

log_format main escape=json '$remote_addr | $remote_user | [$time_local] | $request | $status | $request_body';

就是需要保证用来分割日志内容的符号,不能出现在内置变量的值当中,当然可以定义为多个字符的字符串,例如‘|-|’ 。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值