【发布时间】:2019-05-28 04:01:03
【问题描述】:
在 Nginx 中,目前我们正在记录 $request。但是我们想更改其中一个请求参数的值。 我们需要记录散列 ID 而不是实际 ID。 你能告诉我我怎样才能做到这一点吗?
$request 的当前值:
POST /test/userRegistration?id=1234&name=John&address=UK
预期值:
POST /test/userRegistration?id=8c77ec99436a23d2c05a6bd36c64de856&name=John&address=UK
Nginx 日志格式:
log_format main '$request $status $request_time';
我已经编写了以下 ruby 代码来满足我的要求。但我不确定如何将它集成到 ERB 文件中。该 log_format 在 一个 ERB 文件。
代码:
str = "POST /test/userRegistration?name=John&id=1234&address=UK"
str1 = str.scan(/&id=.+&/)[0]
str1 = str1.chomp('&')
str1 = str1.split("=").last
str1 = Digest::SHA256.hexdigest str1
str2 = "&id="+str1+"&"
str3 = str.sub(/&name=.+&/, str2)
puts str3
请帮助我在 ERB 文件中编写类似的逻辑。另外,请让我知道是否有更好的方法来处理它,因为我是 Ruby 新手。
谢谢
【问题讨论】:
-
基本上你只需要覆盖nginx日志数据,想法是用散列id替换id?
-
@gskillz 没错
标签: ruby nginx chef-infra erb chef-recipe