Как изменить значение $ request в Nginx? - PullRequest
0 голосов
/ 27 мая 2019

В Nginx в настоящее время мы регистрируем $ 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.

Спасибо

1 Ответ

0 голосов
/ 27 мая 2019

Мне нужно проверить openresty проекта или установить расширение LUA для Nginx. Можно заменить nginx на openresty, чтобы получить LUA из коробки.

С помощью скрипта LUA вы можете проанализировать эту определенную часть запроса - аналогично вашему ruby-коду и записать измененный uri запроса в журнал доступа Nginx.

Вот несколько примеров, как вы можете изменить параметры запроса с помощью LUA

...