Injetar cabeçalho na função de redirecionamento HAProxy

Injetar cabeçalho na função de redirecionamento HAProxy

Eu tenho HAProxy 1.5.8.

Eu tenho esta regra 301 básica:

frontend http_frontend
  bind *:80
  mode http
  redirect location https://xxxx.com code 301

A resposta é assim:

HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://xxxx.com
Connection: close

Preciso adicionar uma data no cabeçalho, como faria um servidor web normal.

respaddA função não parece afetar o redirecionamento.

É possível ?

Responder1

É possível fazer isso, Willy da HaProxy identificou a solução aqui:

https://www.mail-archive.com/[e-mail protegido]/msg25061.html

http-request redirect location "https://blah..\r\nDate: xyz"

O problema que eu queria resolver era adicionar um cabeçalho HSTS, mas acho que você poderia usá-lo para um encontro.

Não é bonito, mas funciona, e acabei de implementá-lo, para nós também queríamos renderizar um cabeçalho identificando a caixa que estava gerando o redirecionamento, pois temos várias caixas HaProxy.

Isso foi testado por mim no HaProxy 1.6, não posso garantir outras versões.

Responder2

Não é possível para nenhum navegador que já tenha visto o redirecionamento. Ele é armazenado em cache indefinidamente. Um redirecionamento 301 só deve ser usado quando você estiver desativando um site permanentemente e, mesmo assim, é uma má ideia - você perde a visibilidade do tráfego que ainda atinge o site antigo.

Portanto, mude para um redirecionamento 302 antes de fazer qualquer outra coisa.

Haproxy não é um servidor web. Não há como gerar um cabeçalho que contenha dados dinâmicos - se você realmente deseja um cabeçalho de data, use um servidor web. Existem vários leves capazes dessa tarefa.

Alternativamente, diga-nos por que vocêprecisartal cabeçalho e poderemos aconselhar sobre uma solução mais adequada.

Responder3

Descobri na discussão do problema do github que é possível desde o Haproxy 2.2

https://stackoverflow.com/a/72830822/1849577

http-after-response set-header Cache-Control max-age=3600 if {condition}

informação relacionada