sobre relayd eu acho que algo como conseguiria o que você quer:
Isso define o ip onde você pode encontrar o foo "service" é uma lista de host basicamente (estilo pf)
table <fooservice> { 192.168.30.3 }
table <barservice> { 192.168.30.4 }
Aqui, você define um modelo para as regras a serem aplicadas em uma seção de retransmissão que corresponde à solicitação com o cabeçalho Host sendo foo.hermes-technology.de e, nesse caso, você encaminha para o host que está na tabela fooservice no < a href="http://man.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/relayd.conf.5#FILTER_RULES"> manual do relayd eles dizem que a seção anterior precisa uma instrução forward correspondente na seção de relés
http protocol "httpproxy" {
pass request quick header "Host" value "foo.hermes-technology.de" \
forward to <fooservice>
pass request quick header "Host" value "bar.hermes-technology.de" \
forward to <barservice>
block
}
Isso define o relé e usa as duas tabelas e o protocolo definido acima.
relay "proxy" {
listen on 192.168.30.2 port 80
protocol "httpproxy"
forward to <fooservice> port 80
forward to <barservice> port 80
}