Siento que hdr_sub es mejor para tus necesidades. Estuve usando hdr_end por un tiempo pero se encuentra con el siguiente problema:
las solicitudes con el puerto 80 generalmente eliminan el puerto para que el encabezado del host se vea como "example.com", pero si estaba solicitando explícitamente un puerto, como example.com:8080, el encabezado tendrá el puerto y hdr_end fallará busque "example.com".
hdr_sub hará una coincidencia de subcadena, lo que parece mejor para usted (y para mí).
Cualquiera de las soluciones todavía tiene algo desagradable que no me gusta. Evaluación dependiente del orden de los resultados.
por ejemplo (mis condiciones se ven así en la interfaz)
acl is_dbadmin hdr_sub(host) -i dbadmin.example.com
Solicitar en el puerto 8080 sería así:
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"
donde el puerto 80 probablemente podría ser así
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
, o simplemente usaríaacl valid_domains hdr_dom(host) -i mysite.com
Hay casos en los que necesita ser explícito al respecto, como el manejo de redireccionamientos para SSL comodín con múltiples niveles de subdominios.
La coincidencia final (
hdr_end
o-m end
) o subcadena (hdr_sub
o-m sub
) puede tener efectos secundarios no deseados de la coincidencia más de lo esperado. En muchos casos, esto puede no importar realmente, ya que no tiene tráfico para esos dominios que llegan al servidor, pero eso no significa que sea la solución técnicamente correcta.Usar una expresión regular es la mejor manera que he encontrado para hacer una coincidencia explícita. Por ejemplo, si solo desea hacer coincidir
*.example.org
sin hacer coincidirsub.domain.example.org
:Si también desea manejar (cualquier) puerto no estándar, esto puede extenderse ligeramente:
Lo anterior coincidirá :
test1.example.org
test2.example.org:8080
y se no coincidir :
example.org
two.subs.example.org
myexample.org
test.myexample.org
test.example.org.other.com
fuente