我已经设置了 haproxy 并且它运行良好,我可以访问位于后端服务器上的网页。
设置如下:
有一个前端 haproxy 服务器,根据端口指向不同的后端
- 前端:81 指向 后端:8100
- 前端:82 指向 后端:8200
在前端网页上http://frontend:82/
有这样的链接,http://frontend:82/foo
每当我点击其中一个链接时,haproxy 都会确保连接到正确的后端服务器。其中一个链接指向http://backend:8200/bar
(后端服务器和不同的端口)。
如果我点击该链接,我会被重定向到后端服务器,而不是前端 haproxy。有什么方法可以拦截对后端服务器的调用吗?
答案1
当用户点击链接时http://backend:8200/bar
,除非“后端”的 DNS 指向您的 HAProxy,否则您将无法捕获该请求。
端口可能不是实现此目的的最佳方式。
你最好在 80 上设置一个前端,并使用基于 url 的 acl
例如:
frontend http_frontend
bind *:80
acl path_foo path_beg /foo
acl path_barbar path_beg /bar
use_backend foo_backend if path_foo
use_backend bar_backend if path_bar
backend foo_backend
server backend:8200
backend bar_backend
server backend:8100
这样,您就可以从链接中剥离所有端口分配。