【问题标题】:How to modify the value of $request in Nginx?如何在 Nginx 中修改 $request 的值?
【发布时间】: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


【解决方案1】:

对我来说,您需要检查openresty 项目或为 Nginx 安装 LUA 扩展。可以将 nginx 替换为 openresty 以使 LUA 开箱即用。

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

这里有一些示例如何使用LUA修改请求参数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2019-11-15
    • 2012-12-09
    相关资源
    最近更新 更多