如果有人尝试访问我的 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 吗?
答案1
正如评论中提到的,您无法为 404 指定错误文件,因为 HAProxy 永远不会生成 404。您必须使用 503 之类的错误文件,这是 HAProxy 实际发出的错误文件,并且具有可配置的错误文件。您的 204 文件可以按原样使用,只需在配置中将 503 替换为 204 即可。