HTTP-Antwortdaten in nginx mit Lua ersetzen
English
Deutsch
Dies ist ein Beispiel, wie body_filter_by_lua_block verwendet wird, um Teile der Antwort durch einen String zu ersetzen. Da es sich um ein Lua-Feature handelt, kann beliebiger Code beim Modifizieren des Bodys verwendet werden, einschließlich Netzwerkanfragen, Parsing usw. Hinweis: Dies ersetzt in der Antwort, die an den Client gesendet wird, nicht in der Anfrage, die an den Reverse-Proxy gesendet wird. Siehe String in Reverse-Proxy-HTTP-Anfrage mit Lua & nginx ersetzen für einen Lua-basierten Ansatz zum Ersetzen eines Strings in der Anfrage.
nginx_lua_body_filter.conf
header_filter_by_lua_block { ngx.header.content_length = nil }
body_filter_by_lua_block {
local body = ngx.arg[1]
if body then
body = ngx.re.gsub(body, "string_to_replace", "string_by_which_to_replace")
end
ngx.arg[1] = body
}Dies wird typischerweise in einem location {}-Block verwendet, um Strings nur für bestimmte URLs zu ersetzen:
nginx_lua_location.conf
location /config {
proxy_pass http://127.0.0.1:12345/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host meet.techoverflow.net;
header_filter_by_lua_block { ngx.header.content_length = nil }
body_filter_by_lua_block {
local body = ngx.arg[1]
if body then
body = ngx.re.gsub(body, "myvar", "myothervar")
end
ngx.arg[1] = 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