最新消息:

Nginx Session 模块

nginx admin 4004浏览 0评论

上一篇《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 模块

您必须 登录 才能发表评论!