我有一个在 IP 1.2.3.4 上运行的 haproxy。它托管了大约 10 个网站域名。如果我访问http://1.2.3.4它显然会转到这 10 个域中的一个,但我不希望它这样做。我希望它给出错误或类似的东西。我该怎么做?
答案1
我假设您为每个域配置了一个后端。基本上,您只需通过主机标头配置匹配(您可能已经这样做了),然后配置一个为所有其他流量提供服务的默认后端。
frontend http-in
bind *:80
mode http
# match host headers
acl host_one hdr(host) -i one.example.com
acl host_two hdr(host) -i two.example.com
# ..
acl host_ten hdr(host) -i ten.example.com
# map to backends
use_backend backend_one if host_one
use_backend backend_two if host_two
# ..
use_backend backend_ten if host_ten
# all unmatched hosts fallback to default
default_backend backend_default
如果你希望此后端提供错误,你可以使用http 请求被拒绝指示:
backend backend_default
errorfile 403 /var/www/403.http
http-request deny deny_status 403
请注意,您只能使用错误文件分别是 200、400、403、405、408、429、500、502、503 和 504。