Quiero devolver un código de error HTTP 204 si alguien intenta acceder a una ruta particular en mi servidor web. Podría configurar uno de mis servidores web para que devuelva un error 204 y le señale haproxy como back-end. Sin embargo, dado que no se está enviando información, pensé que esto debería ser posible desde el propio haproxy. No es necesario molestar a mis servidores web reales.
Intenté crear un backend que generaría el error 204 de la siguiente manera:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
El archivo 204.http contiene:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
Cuando inicio haproxy, me sale este error:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
Creo que puedo estar haciendo esto de la manera incorrecta. ¿Alguien puede sugerir una forma de obligar a haproxy a devolver un 204 para una partida acl determinada?
503
archivo de error? No hay servidores de fondo reales, por lo que HAproxy debería servir la503
respuesta.Content-Type
no tiene sentido en este contexto, pero realmente no hay suficiente información aquí para descubrir cuál es el contexto. Por supuesto, HTTP 204 rara vez se usa de todos modos. Mi opinión sobre 204 es que el servidor de origen probablemente debería estar enviándola, si hay un escenario en el que usarlo tenga sentido.Respuestas:
Como se menciona en los comentarios, no puede especificar un archivo de error para 404, ya que HAProxy nunca generará un 404. Debe usar algo como 503, que HAProxy realmente emite y tiene un archivo de error configurable. Su archivo 204 se puede usar como está, simplemente sustituya 503 por 204 en su configuración.
fuente