Set-Misc#
Модуль set-misc
расширяет стандартный функционал модуля
Rewrite, добавляя поддержку экранирования и обратного экранирования URI, кавычек
в формате JSON, а также различных методов кодирования и декодирования (HEX, MD5,
SHA1, Base32, Base64) и других операций.
Он позволяет решать следующие задачи:
Обработка URI: экранирование и обратное экранирование URI.
Кодирование и декодирование: поддержка HEX, MD5, SHA1, Base32, Base64.
Дополнительные функции: работа с JSON-кавычками и другие утилитарные возможности.
Загрузка модуля#
Для работы с модулем необходимо загрузить его в контексте main{}
.
В примере ниже также используются директивы модуля echo:
load_module modules/ndk_http_module.so;
load_module modules/ngx_http_set_misc_module.so;
load_module modules/ngx_http_echo_module.so;
Пример конфигурации#
server {
listen 80;
server_name localhost;
location /ifempty {
set $a $arg_a;
set_if_empty $a 56;
echo "arg_a = '$arg_a'";
echo "a = '$a'";
}
location /unescape {
set_unescape_uri $a $arg_a;
set_escape_uri $b $a;
echo "arg_a = '$arg_a'";
echo "a = '$a'";
echo "b = '$b'";
}
location /base32 {
set_encode_base32 $a $arg_a;
set_decode_base32 $b $a;
echo "arg_a = '$arg_a'";
echo "a = '$a'";
echo "b = '$b'";
}
location /hex {
set_encode_hex $a $arg_a;
set_decode_hex $b $a;
echo "arg_a = '$arg_a'";
echo "a = '$a'";
echo "b = '$b'";
}
}
Демонстрация работы#
$ curl localhost/ifempty/?a=100
arg_a = '100'
a = '100'
$ curl localhost/ifempty
arg_a = ''
a = '56'
$ curl localhost/unescape/?a=Hello%20world!
arg_a = 'Hello%20world!'
a = 'Hello world!'
b = 'Hello%20world!'
$ curl localhost/base32/?a=abcde
arg_a = 'abcde'
a = 'c5h66p35'
b = 'abcde'
$ curl localhost/hex/?a=abcde
arg_a = 'abcde'
a = '6162636465'
b = 'abcde'
Дополнительная информация#
Полное описание директив и исходный код доступны по ссылке: openresty/set-misc-nginx-module.