Inyectar encabezado en la función de redireccionamiento HAProxy

Inyectar encabezado en la función de redireccionamiento HAProxy

Tengo HAProxy 1.5.8.

Tengo esta regla 301 básica:

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

La respuesta se ve así:

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

Necesito agregar una fecha en el encabezado, como lo haría un servidor web normal.

respaddLa función no parece afectar la redirección.

Es posible ?

Respuesta1

Es posible hacer esto, Willy de HaProxy identificó la solución aquí:

https://www.mail-archive.com/[correo electrónico protegido]/msg25061.html

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

El problema que quería resolver era agregar un encabezado HSTS, pero supongo que podrías usarlo para una cita.

No es bonito, pero funciona y lo acabo de implementar. Para nosotros también queríamos representar un encabezado que identificara el cuadro que generaba la redirección, ya que tenemos varios cuadros de HaProxy.

Esto fue probado por mí en HaProxy 1.6, no puedo garantizar otras versiones.

Respuesta2

No es posible para ningún navegador que haya visto alguna vez la redirección. Se almacena en caché indefinidamente. Una redirección 301 solo debe usarse cuando se retira un sitio de forma permanente, e incluso entonces es una mala idea: se pierde visibilidad del tráfico que aún llega al sitio anterior.

Así que cámbialo a una redirección 302 antes de hacer cualquier otra cosa.

Haproxy no es un servidor web. No tiene medios para generar un encabezado que contenga datos dinámicos; si realmente desea un encabezado de fecha, use un servidor web. Hay varios ligeros capaces de realizar esta tarea.

Alternativamente, cuéntanos por quénecesidaddicho encabezado y podríamos aconsejarle sobre una solución más adecuada.

Respuesta3

Encontré en la discusión del problema de github que es posible desde Haproxy 2.2

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

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

información relacionada