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 x
e retorna o valor encontrado. (Tecnicamente, ele lê a última ocorrência deste cabeçalho, mas o Host
cabeçalho só deve aparecer uma vez.)
Omap
conversorpega 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 found
teste não retornará nenhum resultado e a regra não será correspondida. ( -i
torna a pesquisa sem distinção entre maiúsculas e minúsculas).
Se a regra for correspondida, construímos uma nova URL para o Location
cabeçalho de resposta, usando a string literal https://
(altere para http
se 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.