我想使用 nginx 作为前端代理,然后根据响应的 MIME 类型(Content-Type 标头)有条件地代理到另一个 URL。
例如,假设我的 1% 的客户正在使用不处理 PNG 的用户代理。对于那个 UA,如果响应的类型是 image/png,我想再次 proxy_pass 到一个特殊的 URL,该 URL 将获取 PNG 并为我转换它。
理想情况下,我会在不损害 99% 不需要这种特殊处理的用户的性能和缓存的情况下这样做。我无法修改后端应用程序。(否则我可以让它检测 UA 并修复响应,或者发送 X-Accel-Redirect 让 nginx 运行另一个位置块。)
如果这不可能或性能不佳,我会从哪里开始编写模块以达到预期的效果?如,哪个扩展点让我最接近实现这个逻辑?
编辑:似乎我可以使用 Lua 执行子请求,然后检查那里的响应标头。但这意味着通过 Lua 传递每个请求,这似乎不是最理想的