我拥有一个类似 xyz.com 的域名,并且我正在尝试使用 haproxy 重定向子域名的其他 ip。
我在服务器上使用 tomcat,并使用 haproxy 将端口 80 上的传入请求重定向到端口 8080。
Like;
www.xyz.com -> 10.0.0.1
www.xyz.com/abc -> 10.0.0.2
or abc.xyz.com -> 10.0.0.2
为了进行这种重定向,我该如何设置 haproxy?
答案1
在 haproxy 中,您可以结合acl
规则和redirect
规则进行重定向;使用规则选择正确的服务器backend
。
官方haproxy 文档不太容易阅读,但是非常完整。
类似这样的(只是一个草图,给你一个想法):
frontend http-in
mode http
bind FRONTENDIP:80 # eg. 100.100.100.100:80
default_backend tomcat_server_2
acl tomcat_1 hdr_end(host) -i www.xyz.com
acl tomcat_2 hdr_end(host) -i abc.xyz.com
acl tomcat_path path_beg /abc/
use_backend tomcat_server_1 if tomcat_1 !tomcat_path
backend tomcat_server_1
server tomcat1 10.0.0.1:8080 maxconn 1000
backend tomcat_server_2
server tomcat2 10.0.0.2:8080 maxconn 1000
如果你想重定向 www.xyz.com/abc/
到abc.xyz.com
:
redirect prefix http://abc.xyz.com if tomcat_path
答案2
Haproxy 既不用于重定向名称,也不用于重定向 URI。
名称由名称服务器 (DNS) 引导。
URI 由 Web 服务器(HTTP)(的模块)重定向。
Haproxy 用于平衡两个(或多个)相同服务器之间的流量(TCP/IP)。