nginx:解密查询参数

时间:2017-04-21 03:11:40

标签: nginx

我有2台服务器。服务器A是运行ASP.NET的Windows服务器,服务器B是运行Nginx的Linux服务器。我需要安全地将用户从服务器A重定向到服务器B.我想让服务器A将类似ip=132.65.78.4;user=xyz@example.com;node=abc的值加密到重定向的查询参数中,如下所示:https://serverb.example.com?encrypted=<encrypted value here>

然后让服务器B(使用共享密钥)解密查询参数,验证用户来自的IP地址,然后信任usernode的值来处理请求。

如何配置nginx来执行此操作?我可以根据答案自己找出服务器A部分。谢谢!

1 个答案:

答案 0 :(得分:1)

我建议使用“nginx lua”模块,它可以让你用Lua代码修改部分请求。

有专门修改查询字符串的工具,因此您可以执行加密并设置“加密”值。

https://github.com/openresty/lua-nginx-module#ngxreqset_uri_args

如果您要处理请求参数,可以通过set_by_lua_blockset_by_lua_file

执行此操作

所以也许你可以这样做:

set_by_lua_block $validated {
   local enc = ngx.var.arg_encrypted
   local decrypted = decrypt(enc)

   return do_some_validation(decrypted) and "1" or "0"
}

if ($validated = "0") {
   return 403;
}