配置haproxy以针对特定ACL匹配返回204


8

如果有人尝试访问Web服务器上的特定路径,我想返回HTTP 204错误代码。我可以将其中一个Web服务器设置为返回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

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
您是否曾尝试将其设置为错误文件503?没有实际的后端服务器,因此HAproxy应该提供503响应。
菲利克斯·弗兰克

您是否认为204是这种情况的正确状态代码?根据HAProxy文档,204和404不支持返回代码。看来这可能要返回403。204建议该请求已传递到服务器。
安东尼·法玛蒂诺

1
有趣。Content-Type在这种情况下没有任何意义,但是实际上这里没有足够的信息来弄清楚上下文是什么。当然,无论如何很少使用HTTP 204。我对204的感觉是,如果存在完全使用它的情况,则原始服务器可能应该发送它。
迈克尔·汉普顿

Answers:


2

如注释中所述,您不能为404指定错误文件,因为HAProxy永远不会生成404。您必须使用类似503的文件,HAProxy实际上会发出该错误文件,并且具有可配置的错误文件。您的204文件可以按原样使用,只需在配置中用503代替204。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.