通过在nginx配置中调用外部C代码来设置缓存键

时间:2012-12-06 19:39:40

标签: c nginx lua

ServerFault可能会更好,但是,我正在评估nginx以确定它是否能够解决特定问题。

问题

我想在FastCGI Cache中使用nginx响应缓存。但我需要使用cookie中的值设置缓存键。问题是在我获取值以在缓存键中使用cookie之前,需要解密cookie。

我所知道的

我知道如何将nginx配置为缓存(fastcgi_cache)。我也知道我可以在缓存键(fastcgi_cache_key)中设置和使用自定义变量。但是,我不知道如何调用自定义函数来解密cookie。我知道nginx有模块的概念。我也注意到与Lua的整合。

问题

如果我的解密可以作为C代码使用,我可以从nginx配置访问此外部代码并使用其返回值吗?

2 个答案:

答案 0 :(得分:0)

如果使用LuaJIT编译它,Lua模块确实可以帮助你。

点击此处查看如何与Cookie进行互动的简单示例:http://mailman.nginx.org/pipermail/nginx/2011-January/024798.html

现在使用LuaJIT,您可以使用FFI来调用您的C解密代码:http://luajit.org/ext_ffi.html

另一种可能性是在C中完成所有操作,这可能会更快,但可能会更多工作。

答案 1 :(得分:0)

只要您的代码在C中,最简单的解决方案就是编写简单的nginx模块,该模块提供带有解密值的变量。可以在ngx_http_secure_link_module中找到如何提供变量的相对简单的示例。