代理到使用相对 URL 的不同 Web 服务器

代理到使用相对 URL 的不同 Web 服务器

我在同一台机器的不同端口上运行了多个 Web 服务,我想使用 HAproxy 通过不同的 URL 连接到它们

例如,localhost / app1 应该转到 localhost:1234,localhost / app2 应该转到 localhost:5678

我已经通过使用

...
use_backend backend_app1 if { path_beg -i /app1 }
...

backend backend_app1
   server autosupport localhost:1234

但是现在如果我说 localhost/app1/my_page.html,我的网络服务器会抱怨,因为它不知道 /app1/my_page.html 是什么,它只知道 /my_page.html 是什么

我已经通过/app1使用 regsub 删除来修复这个问题:

backend backend_app1
   http-request set-uri %[url,regsub(^/app1,/,)]
   server autosupport localhost:1234

现在可以加载 localhost/app1/my_page.html 上的任何内容

我现在的问题是,my_page.html 可能会尝试使用相对 URI 加载其他文件,例如图像。例如<img src='/my_image'>

这将转到 localhost/my_image。我需要将其转到 localhost/app1/my_image,并且我无法将页面本身更改为使用绝对 URL

我尝试设置 content-base 标头,但似乎不起作用。我还尝试使用 cookies 和 referrer 标头,但找不到任何有效的方法。

如果 HAproxy 无法实现这一点,我愿意使用其他产品。

相关内容