Desejo retornar um código de erro HTTP 204 se alguém tentar acessar um caminho específico no meu servidor web. Eu poderia definir um dos meus servidores da web para retornar um erro 204 e apontar haproxy para ele como um back-end. No entanto, como nenhuma informação está sendo enviada, achei que isso deveria ser possível com o haproxy. Não há necessidade de incomodar meus servidores web atuais.
Tentei criar um back-end que geraria o erro 204 da seguinte maneira:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
O arquivo 204.http contém:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
Quando inicio o haproxy, recebo este erro:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
Eu acho que posso estar fazendo isso da maneira errada. Alguém pode sugerir uma maneira de forçar o haproxy a retornar um 204 para uma determinada partida acl?
503
arquivo de erro? Como não existem servidores de back-end reais, o HAproxy deve servir a503
resposta.Content-Type
não faz sentido nesse contexto, mas realmente não há informações suficientes aqui para descobrir qual é o contexto. É claro que o HTTP 204 raramente é usado de qualquer maneira. Minha opinião sobre 204 é que o servidor de origem provavelmente deveria enviá-lo, se houver um cenário em que usá-lo faça algum sentido.Respostas:
Conforme mencionado nos comentários, não é possível especificar um arquivo de erro para 404, pois o HAProxy nunca gerará um 404. Você deve usar algo como 503, que o HAProxy realmente emite e possui um arquivo de erro configurável. Seu arquivo 204 pode ser usado como está, basta substituir 503 por 204 na sua configuração.
fonte