String in Reverse-Proxy-HTTP-Anfrage mit Lua & nginx ersetzen

English Deutsch

access_by_lua_block kann verwendet werden, um beliebige Strings in einer nginx-Anfrage zu ersetzen. Hinweis: Dies ersetzt in der Anfrage an den Reverse-Proxy, nicht in der Antwort vom Reverse-Proxy. Siehe HTTP-Antwortdaten in nginx mit Lua ersetzen für einen Lua-basierten Ansatz zum Ersetzen eines Strings in der Antwort.

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)
}

Dies wird typischerweise in einem location {}-Block verwendet, sodass das Ersetzen nur erfolgt, wenn eine bestimmte Menge von URLs aufgerufen wird:

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