Set-Misc#

set-misc 模块通过添加对 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.