HAProxy 1.7 Redirigir/Reescribir dominios específicos con archivos de mapa

HAProxy 1.7 Redirigir/Reescribir dominios específicos con archivos de mapa

Soy nuevo en HAProxy y me gustaría redirigir solicitudes en dominios definidos de archivos de mapas. Un breve ejemplo: en mi archivo redirigir.map:

abc.com xyz.com
def.ru idk.com

Entonces, si el usuario envía una solicitud al dominio abc.com o def.ru, será redirigido al dominio definido. Pero si solicita asd.com, no se debe realizar ninguna redirección. Mi objetivo es definir esas redirecciones en un archivo de mapa para que sea fácil de cambiar.

A continuación, me gustaría hacer lo mismo con las reescrituras de uri. Algo como:

http-request set-uri X if Y from rewrite.map

Entonces mi archivo de mapa se verá así:

 (my X variable)    (my Y variable)
/abc/def/specific  www.mydomain.com/specific

¿Tengo siquiera la oportunidad de hacer esto con HAProxy?

Respuesta1

http-request redirect location https://%[hdr(host),map(/etc/haproxy/rewrite.map)]%[capture.req.uri] code 301 if { hdr(host),map(/etc/haproxy/rewrite.map) -i -m found }

Elhdr(x)buscarlee el encabezado de la solicitud xy devuelve el valor encontrado. (Técnicamente, lee la última aparición de este encabezado, pero el Hostencabezado solo debería aparecer una vez).

Elmapconvertidortoma el valor que lo precede (conectado con ,), lo busca en la tabla del mapa y devuelve el resultado.

Si no se encuentra ninguna coincidencia, no se devuelve ningún resultado, por lo que la -m foundprueba no devuelve ningún resultado y la regla no coincide. ( -ihace que la búsqueda no distinga entre mayúsculas y minúsculas).

Si la regla coincide, creamos una nueva URL para el Locationencabezado de respuesta, usando la cadena literal https://(cámbiela httpsi corresponde) + el nombre de host reescrito del archivo de mapa + el URI de solicitud original, que comienza con el inicio /e incluye la ruta. y cadena de consulta, preservando todo el URI de solicitud.

Si no desea conservar el URI original, sino simplemente enviar todo a la página principal del sitio de destino, elimínelo %[capture.req.uri]de la expresión.

información relacionada