如何使用 Lua 和 nginx 在反向代理 HTTP 请求中替换字符串
你可以使用 access_by_lua_block 来替换 nginx 请求中的任意字符串。注意:这将在到反向代理的请求中替换,而不是在来自反向代理的响应中替换。有关如何在响应中替换字符串的基于 Lua 的方法,请参见如何使用 lua 在 nginx 中替换 HTTP 响应数据。**
access_by_lua.conf
access_by_lua_block {
ngx.req.read_body()
local body = ngx.req.get_body_data()
if body then
body = ngx.re.gsub(body, "string_to_replace", "string_by_which_to_replace")
end
ngx.req.set_body_data(body)
}这通常用于 location {} 块中,这样你只可以在访问特定 URL 集时替换:
location_config.conf
location /config {
proxy_pass http://127.0.0.1:12345/;
proxy_set_header X-Forwarded-For $remote_addr;
access_by_lua_block {
ngx.req.read_body()
local body = ngx.req.get_body_data()
if body then
body = ngx.re.gsub(body, "myvar", "myothervar")
end
ngx.req.set_body_data(body)
}
}Check out similar posts by category:
Nginx
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow