我在同一台机器的不同端口上运行了多个 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 无法实现这一点,我愿意使用其他产品。