我有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地址,然后信任user
和node
的值来处理请求。
如何配置nginx
来执行此操作?我可以根据答案自己找出服务器A部分。谢谢!
答案 0 :(得分:1)
我建议使用“nginx lua”模块,它可以让你用Lua代码修改部分请求。
有专门修改查询字符串的工具,因此您可以执行加密并设置“加密”值。
https://github.com/openresty/lua-nginx-module#ngxreqset_uri_args
如果您要处理请求参数,可以通过set_by_lua_block
或set_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;
}