如何在Nginx中修改$ request的值?

时间:2019-05-27 14:20:01

标签: ruby nginx chef erb chef-recipe

在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';

我已经编写了以下红宝石代码来满足我的要求。但是我不确定如何将其集成到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新手,请告诉我是否有更好的方法来处理它。

谢谢

1 个答案:

答案 0 :(得分:0)

对我来说,您需要检查openresty项目或为Nginx安装LUA扩展。可以用openresty代替nginx来获得LUA。

使用LUA脚本,您可以解析请求的这一部分-类似于您的ruby代码,并将修改后的请求uri记录在Nginx访问日志中。

以下是一些示例,您可以使用LUA修改请求参数