Я хочу вернуть код ошибки HTTP 204, если кто-то пытается получить доступ к определенному пути на моем веб-сервере. Я мог бы настроить один из моих веб-серверов так, чтобы он возвращал ошибку 204 и указывал на него haproxy в качестве бэкэнда. Однако, поскольку информация не отправляется, я решил, что это можно сделать из самого haproxy. Не нужно беспокоить мои настоящие веб-серверы.
Я попытался создать бэкэнд, который бы генерировал ошибку 204 следующим образом:
frontend ...
...
acl is_always204 path_beg /thisone
use_backend always204 if is_always204
...
backend always204
errorfile 404 /etc/haproxy-shared/errors/204.http
Файл 204.http содержит:
HTTP/1.0 204 No Content
Cache-Control: no-cache
Connection: close
Content-Type: image/png
Когда я запускаю haproxy, я получаю эту ошибку:
parsing [/etc/haproxy/haproxy:51] : status code 404 not handled, error customization will be ignored.
Я думаю, что я могу поступить об этом неправильно. Кто-нибудь может предложить способ заставить haproxy вернуть 204 для данного соответствия acl?
503
ошибочным файлом? Фактических внутренних серверов нет, поэтому HAproxy должен обслуживать503
ответ.Content-Type
не имеет смысла в этом контексте, но здесь действительно недостаточно информации, чтобы понять, что это за контекст. Конечно, HTTP 204 все равно редко используется. Я чувствую, что 204 - это то, что исходный сервер, вероятно, должен отправлять его, если есть сценарий, в котором использование имеет смысл вообще.Ответы:
Как упомянуто в комментариях, вы не можете указать файл ошибок для 404, поскольку HAProxy никогда не сгенерирует 404. Вы должны использовать что-то вроде 503, которое HAProxy действительно излучает и имеет настраиваемый файл ошибок. Ваш файл 204 можно использовать как есть, просто замените 503 на 204 в вашей конфигурации.
источник