如何后期处理 Nginx 反向代理响应

问题描述 投票:0回答:1

如何拦截和修改通过反向代理和 proxy_pass 运行的请求的响应 HTML?

我有大量嵌入式服务器,我正在使用 Nginx 通过一个域进行反向代理,我希望能够删除某个标签并根据特定的 url 将 css 添加到响应中?

我知道你可以使用 Lua 模块,但我不知道如何与 proxy_pass 结合使用。

举个例子:

server {
    listen       80;     
    server_name  www.website.com;

    location /device1 {         
        proxy_pass http://1.1.1.1:8080; 
        -->also post process to some Lua script or something. 
    }
} 
nginx lua
1个回答
0
投票

由于

proxy_pass
content_by_lua_block
都属于内容阶段,所以它们是互斥的:

https://github.com/openresty/lua-nginx-module?tab=readme-ov-file#content_by_lua_block

lua_block 的内容

[...]

请勿在同一位置使用此指令和其他内容处理程序指令。例如,该指令和 proxy_pass 指令不应在同一位置使用。

为了处理上游主体,您必须使用 Lua cosocket API 进行代理。有一个用于这项工作的库:lua-resty-http。如果响应适合内存,您可以使用单次请求,否则您必须将其逐块流式传输 - 流式请求 - 但这使得处理更具挑战性。

© www.soinside.com 2019 - 2024. All rights reserved.