上一篇《Nginx第三方模块》涉及了数据库、Memcached以及Lua的扩展,但是相对于Web开发是不是还缺点什么呢?答案是回话(Session)模块。
这里还是需要感谢一下@agentzh,已经封装好了encrypted-session模块。模块依赖ngx_devel_kit包。模块地址如下:
编译很简单,类似如下:
./configure --prefix=/opt/nginx --add-module=../ngx_devel_kit --add-module=../encrypted-session-nginx-module
重新编译Nginx二进制,Nginx需要quit再启动。而普通配置更新则reload即可:
kill -HUP `cat /path/nginx/logs/nginx.pid` /path/nginx/sbin/nginx -s reload
在测试之前,需要配置encrypted_session_key(长度32位)和encrypted_session_iv(长度16位)。
encrypted_session_key "abcdefghijklmnopqrstuvwxyz123456"; encrypted_session_iv "1234567812345678"; encrypted_session_expires 5; # 默认过期时间是1d(一天)
话不到多说,直接来读写示例:
- 写入session,测试session名为name,值是smallfish。
location /session-write { set $name 'smallfish'; set_encrypt_session $session_name $name; set_encode_base32 $session_name; add_header "Set-Cookie" "name=$session_name"; echo "write name: $session_name"; }
- 读取session,Nginx读取Cookie方式为:$cookie_xxx。xxx为cookie的名称。
location /session-read { set_decode_base32 $session_name $cookie_name; set_decrypt_session $name $session_name; echo "read name: $name"; }
转载请注明:爱开源 » Nginx Session 模块