forked from vision5/ngx_http_set_hash
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
106 lines (60 loc) · 2.36 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
ngx_http_set_hash_module
------------------------
This module allows you to set the hash (as a hexadecimal string) of an arbitrary
string as the value of a variable. Currently only three are available (MD5, SHA1
and Murmurhash2 (32-bit)), but more will be added later.
Usage
-----
set_[hash] $var_name [value]
set_[hash]_upper $var_name [value]
[hash] ::= md5 | sha1 | murmur2 (more to be added soon)
[value] is any legal string value in Nginx, including variables
Uppercase or lowercase?
-----------------------
The suffix '_upper' indicates that the output should be in uppercase, otherwise any
letters are displayed in lowercase.
Note : unless you have a good reason to use uppercase, you should use lowercase because
the conversion to uppercase adds overhead.
Example
-------
log_format hashes "value : $hash_value "
"md5 : $md5 $md5_upper "
"murmur2 : $murmur2 $murmur2_upper "
"sha1 : $sha1 $sha1_upper";
access_log /var/log/hashes.log hashes;
server {
location / {
set $hash_value $request_uri;
set_md5 $md5 $hash_value;
set_murmur2 $murmur2 $hash_value;
set_sha1 $sha1 $hash_value;
set_md5_upper $md5_upper $hash_value;
set_murmur2_upper $murmur2_upper $hash_value;
set_sha1_upper $sha1_upper $hash_value;
}
}
This will log the md5/murmurhash 2/sha hash values of $request_uri to the log file.
Installation
------------
To install, you must compile Nginx with OpenSSL and the Nginx Development Kit
./configure \
--add-module=/path/to/ngx_devel_kit \
--add-module=/path/to/ngx_http_set_hash
make
make install
Note : If Nginx can't find your system's OpenSSL shared libraries and headers, you
will either want to install the devel version using your package manager, e.g.
apt-get/yum install openssl-dev
or specify a path to a directory where you have extracted the OpenSSL source code :
./ configure --with-openssl=/path/to/openssl ...
Note : This module will work ok with the latest version of Agentzh's set_misc module,
and the result will be the same.
TODO
----
- More hash functions
License
-------
BSD
Copyright
---------
Marcus Clyne (c) 2010