HAProxy 1.7 Redirecionar/reescrever domínios específicos com arquivos de mapa

HAProxy 1.7 Redirecionar/reescrever domínios específicos com arquivos de mapa

Sou novo no HAProxy e gostaria de redirecionar solicitações em domínios definidos por arquivos de mapa. Um pequeno exemplo: No meu arquivo redirect.map:

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

Portanto, se o usuário enviar uma solicitação para o domínio abc.com ou def.ru ele será redirecionado para o domínio definido. Mas se ele solicitar asd.com, nenhum redirecionamento deverá ser feito. Meu objetivo é definir esses redirecionamentos em um arquivo de mapa para que seja fácil alterá-los.

Em seguida, gostaria de fazer o mesmo com as reescritas de uri. Algo como:

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

Então meu arquivo de mapa ficará assim:

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

Tenho a oportunidade de fazer isso com o HAProxy?

Responder1

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 }

Ohdr(x)buscarlê o cabeçalho da solicitação xe retorna o valor encontrado. (Tecnicamente, ele lê a última ocorrência deste cabeçalho, mas o Hostcabeçalho só deve aparecer uma vez.)

Omapconversorpega o valor que o precede (conectado com ,), procura na tabela do mapa e retorna o resultado.

Se nenhuma correspondência for encontrada, nenhum resultado será retornado, portanto o -m foundteste não retornará nenhum resultado e a regra não será correspondida. ( -itorna a pesquisa sem distinção entre maiúsculas e minúsculas).

Se a regra for correspondida, construímos uma nova URL para o Locationcabeçalho de resposta, usando a string literal https://(altere para httpse apropriado) + o nome do host reescrito do arquivo de mapa + o URI da solicitação original, que começa com o início /e inclui o caminho e string de consulta, preservando todo o URI da solicitação.

Se você não deseja preservar o URI original, mas apenas enviar tudo para a página principal do site de destino, remova-o %[capture.req.uri]da expressão.

informação relacionada