
由于保护私人数据(如GDPR等)新规定的出台,用户可能需要更改记录日志的习惯,如果选用Kong作为API网关,只需在一个地方做出修改,所有的服务都会生效,这篇向导会介绍实现此目标的一个方法,另外还有其他方法可以满足其他各种需求,请注意,这些更改只会影响 Nginx 的 access log 的输出,对Kong的日志插件没有任何影响
举个例子,假设用户需要从日志中删除任何关于电子邮件地址的示例,电子邮件可能会以各种形式出现,比如 /servicename/v2/verify/alice@example.com 或者 /v3/verify?alice@example.com ,为了防止这些被添加到日志中,用户需要自定义 Nginx 模板
用户可以先从这个地址获取Nginx的模板文件: https://docs.konghq.com/latest/configuration/#custom-nginx-templates-embedding-kong ,或者复制下面的文件
为了控制日志中的内容,我们需要在模板文件中使用 Nginx 的 map 模块,关于 map 模块的详细信息可以参考 https://nginx.org/en/docs/http/ngx_http_map_module.html ,用户需要创建一个新的变量,变量的内容取决于第一个参数加上匹配的规则,格式如下:
在这个例子中,我们创建一个新的变量 keeplog ,这个变量依赖于 $request_uri ,我们将 map 指令放在 http 块的开头位置,这句话必须在 include 'nginx-kong.conf' 这句话之前,示例中我们可以这么添加:
用户可能注意到配置文件中的每一行都是以~符号开头的,这是 Nginx 中的正则表达式语法,这个例子中我们会查找三个内容:
现在我们需要设置日志格式,我们使用 log_format 模块,并将日志格式新命名为 show_everything,日志的内容可以根据用户需要进行定制,这个例子中,我们将内容改回Kong的标准格式
现在我们自定义的 Nginx 模板可以使用了,文件如下所示:
下一步我们需要告诉Kong使用新创建的日志 show_everything ,为此,我们需要修改变量 proxy_access_log ,此时可以编辑 etc/kong/kong.conf 配置文件,也可以直接修改环境变量 KONG_PROXY_ACCESS_LOG
最后一步重启Kong,使所有更改生效,用户可以使用 kong restart 命令
现在,日志不会记录与电子邮件地址相关的任何请求,我们也可以用类似的逻辑从日志中删除任何我们不想要的内容
1.查看nginx是否有with-http_ssl_module模块: /usr/local/nginx/sbin/nginx -V
2.如果是 没有编译的nginx 可以直接使用:
进入到ngixn源码包目录下
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/bao/nginx_mogilefs_module-1.0.4 --with-pcre=/usr/local/src/bao/pcre-8.36 --with-http_ssl_module
make &&make install
3. 已经编译安装nginx安装ssl模块 :
进入到ngixn源码包目录下
1)
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/bao/nginx_mogilefs_module-1.0.4 --with-pcre=/usr/local/src/bao/pcre-8.36 --with-http_ssl_module
2)编译:make
此处一定要切记:不要使用make install,否则会覆盖掉你现在正在使用的nginx
3)备份原来ngixn的可执行文件:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak
4)复制nginx可执行文件:
cp nginx源码包目录下/objs/nginx /usr/local/nginx/sbin
5)查看效果:
在原生的nginx,他不可以动态加载模块,所以当你安装第三方模块的时候需要覆盖nginx文件.nginx第三方模块安装方法如下:1
./configure --prefix=/你的安装目录 --add-module=/第三方模块目录
以安装pagespeed模块实例
在未安装nginx的情况下安装nginx第三方模块
# ./configure --prefix=/usr/local/nginx-1.4.1 \
--with-http_stub_status_module \
--with-http_ssl_module --with-http_realip_module \
--with-http_image_filter_module \
--add-module=../ngx_pagespeed-master --add-module=/第三方模块目录
# make
# make isntall
# /usr/local/nginx-1.4.1/sbin/nginx
在已安装nginx情况下安装nginx模块
# ./configure --prefix=/usr/local/nginx-1.4.1 \
--with-http_stub_status_module \
--with-http_ssl_module --with-http_realip_module \
--with-http_image_filter_module \
--add-module=../ngx_pagespeed-master
# make
# /usr/local/nginx-1.4.1/sbin/nginx -s stop
# cp objs/nginx /usr/local/nginx/sbin/nginx
# /usr/local/nginx-1.4.1/sbin/nginx
相比之下仅仅多了一步覆盖nginx文件.
总结,安装nginx安装第三方模块实际上是使用–add-module重新安装一次nginx,不要make install而是直接把编译目录下objs/nginx文件直接覆盖老的nginx文件.如果你需要安装多个nginx第三方模块,你只需要多指定几个相应的–add-module即可.
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)