Сконфигурируйте haproxy, чтобы он возвращал 204 для определенного соответствия ACL


8

Я хочу вернуть код ошибки 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?


2
Вы пытались сделать это 503ошибочным файлом? Фактических внутренних серверов нет, поэтому HAproxy должен обслуживать 503ответ.
— Феликс Фрэнк

Считаете ли вы, что 204 является правильным кодом состояния для этой ситуации? Согласно документации HAProxy , 204 и 404 не поддерживаются коды возврата. Кажется, что это может захотеть вернуть 403 . 204 предполагает, что запрос был доставлен на сервер.
— Энтони Фаммартино

1
Интересно. Content-Typeне имеет смысла в этом контексте, но здесь действительно недостаточно информации, чтобы понять, что это за контекст. Конечно, HTTP 204 все равно редко используется. Я чувствую, что 204 - это то, что исходный сервер, вероятно, должен отправлять его, если есть сценарий, в котором использование имеет смысл вообще.
— Майкл Хэмптон

Ответы:


2

Как упомянуто в комментариях, вы не можете указать файл ошибок для 404, поскольку HAProxy никогда не сгенерирует 404. Вы должны использовать что-то вроде 503, которое HAProxy действительно излучает и имеет настраиваемый файл ошибок. Ваш файл 204 можно использовать как есть, просто замените 503 на 204 в вашей конфигурации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.