Eu sinto que hdr_sub é melhor para suas necessidades. Eu estava usando o hdr_end por um tempo, mas o problema é o seguinte:
As solicitações com a porta 80 geralmente retiram a porta para que o cabeçalho do host se pareça com "example.com", mas se você estivesse solicitando uma porta explicitamente, como example.com:8080, o cabeçalho terá a porta e hdr_end falhará no verifique "exemplo.com".
O hdr_sub fará uma correspondência de substring, o que parece ser melhor para você (e para mim).
Qualquer uma das soluções ainda tem uma coisa desagradável que eu não gosto. Solicite uma avaliação dependente dos resultados.
por exemplo (minhas condições são assim no frontend)
acl is_dbadmin hdr_sub(host) -i dbadmin.example.com
Solicitar na porta 8080 seria assim:
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {**example.com:8080**||http://example.com:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"
onde como porta 80 provavelmente poderia ser assim
Jul 9 02:48:40 localhost haproxy[8]: 192.168.1.1:55870 [09/Jul/2015:02:48:40.865] http-in example/s1 1/0/0/20/110 200 330722 - - ---- 0/0/0/0/0 0/0 {example.com||***http://example.com***:} {Apache/2.4.10 (Debia||||} "GET /wp-includes/js/zxcvbn.min.js HTTP/1.1"
acl valid_domains hdr(host) -i mysite.com
+acl valid_domains hdr_end(host) -i .mysite.com
, ou apenas usariaacl valid_domains hdr_dom(host) -i mysite.com
Há casos em que você precisa ser explícito sobre isso, como lidar com redirecionamentos para SSL curinga com vários níveis de subdomínios.
Correspondência final (
hdr_end
ou-m end
) ou substring (hdr_sub
ou-m sub
) pode ter efeitos colaterais não intencionais de correspondência mais do que o esperado. Em muitos casos, isso pode não ser realmente importante, pois você não possui tráfego para os domínios que chegam ao servidor, mas isso não significa que é a solução tecnicamente correta.Usar uma expressão regular é a melhor maneira que encontrei para fazer correspondências explícitas. Por exemplo, se você deseja corresponder apenas
*.example.org
sem correspondênciasub.domain.example.org
:Se você também deseja manipular (qualquer) portas não padrão, isso pode ser estendido um pouco:
O acima irá corresponder :
test1.example.org
test2.example.org:8080
e vai não corresponder :
example.org
two.subs.example.org
myexample.org
test.myexample.org
test.example.org.other.com
fonte