Я пытаюсь анонимизировать адреса электронной почты (заменить их на UUID), чтобы не сохранять их в виде открытого текста в моем журнале доступа nginx. На данный момент я могу заменить его только на *****
, переопределив OpenResty nginx .conf :
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$anonymized_request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
....
map $request $anonymized_request {
default $request;
~([^\?]*)\?(.*)emailAddress=(?<email_address>[^&]*)(&?)(.*)(\s.*) "$1?$2emailAddress=*****$4$5$6"; # $email_address;
}
include /etc/nginx/conf.d/*.conf;
}
Текущий результат:
# curl http://localhost:8080/?emailAddress=dat@mail.de&attr=hello
127.0. 0.1 - - [24/Jan/2020:11:38:06 +0000] "GET /?emailAddress=*****&attr=hello HTTP/1.1" 200 649 "-" "curl/7.64.1" "-"
Ожидается:
127.0. 0.1 - - [24/Jan/2020:11:38:06 +0000] "GET /?emailAddress=a556c480-3188-5181-8e9c-7ce4e391c1de&attr=hello HTTP/1.1" 200 649 "-" "curl/7.64.1" "-"
Пожалуйста, можно ли передать переменную email_address
в скрипт, который преобразует ее в UUID? Или, как мы можем иметь тот же формат журнала, используя log_by_lua_block
?