我对 HAProxy 非常不熟悉,但我正在尝试将其设置为根据主机名代理不同的后端目标。例如,如果有人试图访问https://managementserver.domain.com用于系统管理以及https://packages.domain.com对于包存储库,它们可以连接到后端的适当资源。
我的 haproxy.cfg 看起来像这样:
global
maxconn 10000
log *:514 local0
defaults
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
log global
option httplog
frontend domain.com
bind *:443 ssl force-tlsv12 crt /etc/pki/tls/wildcard.domain.com.pem
acl host_manage hdr(host) -i managementserver.domain.com
acl host_packages hdr(host) -i packages.domain.com
use_backend mgmt_svr if host_manage
use_backend packages_svr if host_packages
default_backend mgmt_svr
backend mgmt_svr
server management systems.domain.com:443 ssl verify none
backend packages_svr
server packages repo.domain.com:443 check ssl verify none
实际上,访问管理服务器似乎可以正常工作,但尝试访问软件包存储库时,客户端上出现 404 错误。我尝试将客户端直接指向软件包存储库,它按预期工作。因此,这一定与我如何设置 HAProxy 有关,但我对 HAProxy 不够熟悉,不知道我做错了什么。
如果有什么不同,则软件包仓库正在 NexusPro 中运行。我们在那里的 yum 仓库中有一些自定义 RPM。尝试访问仓库时出现的具体错误是:
https://packages.domain.com/repository/custom-rpms/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
任何帮助或建议都将不胜感激,因为许多文档似乎都是为那些比我更了解这一点的人编写的。