配置 haproxy 为某个 ACL 匹配返回 204

Tom*_*ime 8 haproxy

如果有人试图访问我的 Web 服务器上的特定路径,我想返回 HTTP 204 错误代码。我可以将我的一个网络服务器设置为返回 204 错误并将 haproxy 指向它作为后端。但是,由于没有发送任何信息,我认为这应该可以从 haproxy 本身完成。无需打扰我的实际 Web 服务器。

我尝试创建一个会产生 204 错误的后端,如下所示:

frontend ...
    ...
    acl is_always204 path_beg /thisone
    use_backend always204 if is_always204
    ...

backend always204
    errorfile 404 /etc/haproxy-shared/errors/204.http
Run Code Online (Sandbox Code Playgroud)

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 为给定的 acl 匹配返回 204 吗?

小智 2

正如评论中提到的,您不能为 404 指定错误文件,因为 HAProxy 永远不会生成 404。您必须使用类似 503 的内容,HAProxy 确实会发出该错误文件并具有可配置的错误文件。您的 204 文件可以按原样使用,只需在配置中用 503 替换 204 即可。