我如何使用nginx来根据某些规则转换传入的查询字符串参数?特别是,我想在每个查询字符串参数值前添加一个前缀。我特别要做以下几点。
给定此URI:
http://localhost:3000/account?id=12345&name=bill
我希望它能变成
http://localhost:3000/account?id=eq.12345&name=eq.bill
其中每个项目的前缀是eq.
原因是我使用nginx作为PostgREST的反向代理,PostgREST有一个丰富的URL语法,围绕eq.
等操作符构建,但我需要在不知道该语法的客户端使用它。
我已经研究了nginx rewrite和nginx map模块。后者看起来很有希望,但我还没有想出如何使用它。
我也尝试了一些lua脚本,试图在npx.req.get_uri_args
上循环,但目前我正在调试Lua代码。
events {
}
http {
resolver 127.0.0.11 ipv6=off;
server {
listen 80;
listen [::]:80;
location / {
default_type text/plain;
access_by_lua_block {
local qs = {}
for key, val in pairs(ngx.req.get_uri_args()) do
table.insert(qs, key, "eq." .. val)
end
ngx.req.set_uri_args(qs)
}
proxy_pass http://postgrest:3000;
}
}
}
1条答案
按热度按时间ffvjumwh1#
我相信我已经回答了我自己的问题,尽管我欢迎更多的投入和贡献。以下Lua脚本在
nginx.conf
中工作:我很想知道在nginx中是否有替代Lua脚本的方法,但这似乎可以做到这一点。