我尝试使用 HAProxy 代理一个 URL 与代理目标服务器路径不匹配的站点。现在我能够使用它reqrep
来编辑路径,并且最终在浏览器中获取 index.html,但它不会加载任何支持文件(.css、.js ext),即使它们已通过引用列出。
例如 www.mysite.com/maps --haproxy--> www.backend-server.com。在我的配置中,我删除了 /maps,因此我们最终位于 www.backend-server.com 的 Web 服务器根目录,并且能够获取 index.html,但现在当 .css 和 .js 尝试加载时,它们无法加载,因为它们正在引用,www.mysite.com/icons/text.gif
而我猜它们应该引用www.mysite.com/maps/icons/text.gif
。另外,我不能只制定一条规则说 .css 和 .js 转到某个后端,因为我有不同的应用程序都有这个问题,并从不同的地方提取它们的 .js 和 .css 文件。我该如何正确地做到这一点?这是我的配置:
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend dev
bind xxx.xx.x.30:80
option forwardfor except 127.0.0.0/8
#Routing based on Web App
acl filebrowser url_beg /maps
use_backend dev.maps if maps
backend dev.maps
option httpclose
option forwardfor
reqrep ^([^\ ]*\ /)maps[/]?(.*) \1\2
server maps maps.backend-server.com:80 check