我如何使用 HAProxy 来 return 基于 URL 中未编码字符的 400 错误?
how would I use HAProxy to return a 400 error based on unencoded characters in the URL?
我想编写一个 haproxy 规则,当 url 包含未编码的字符时,该规则会 return 400 错误请求错误消息。这些不良字符会导致我的应用程序出现服务器错误,并最终导致内存不足错误,最好能及时阻止它们。
正确的方法(我知道)是在服务器端解决这个问题,但由于很多愚蠢的原因,我现在无法更改该代码。
我想我需要类似的东西
acl bad_char path_reg [(badcharsethere)]
但我找不到重定向到 400 错误的示例。
创建一个伪造的 back-end,并将其 503(服务不可用)静态 HTTP 响应文件配置为指向您将用作预制响应的文件,然后使用该文件 back-end 提供服务那些要求。客户端看到的错误代码仅由静态文件中的内容决定。复制示例错误文件之一并记住它们是原始 HTTP 响应,因此您需要在每个 header 末尾添加 \r\n
并在 [=20= 末尾添加 \r\n\r\n
]s.
use_backend bogus if bad_char
backend bogus
errorfile 503 /etc/haproxy/errors/400badchar.http
当 ACL 匹配时,HAProxy 将尝试使用没有服务器的伪造 back-end,因此 HAProxy 将尝试 return 503,这将 return 您的自定义响应文件,您已将其修改为 return 自定义 400 错误。
我想编写一个 haproxy 规则,当 url 包含未编码的字符时,该规则会 return 400 错误请求错误消息。这些不良字符会导致我的应用程序出现服务器错误,并最终导致内存不足错误,最好能及时阻止它们。
正确的方法(我知道)是在服务器端解决这个问题,但由于很多愚蠢的原因,我现在无法更改该代码。
我想我需要类似的东西
acl bad_char path_reg [(badcharsethere)]
但我找不到重定向到 400 错误的示例。
创建一个伪造的 back-end,并将其 503(服务不可用)静态 HTTP 响应文件配置为指向您将用作预制响应的文件,然后使用该文件 back-end 提供服务那些要求。客户端看到的错误代码仅由静态文件中的内容决定。复制示例错误文件之一并记住它们是原始 HTTP 响应,因此您需要在每个 header 末尾添加 \r\n
并在 [=20= 末尾添加 \r\n\r\n
]s.
use_backend bogus if bad_char
backend bogus
errorfile 503 /etc/haproxy/errors/400badchar.http
当 ACL 匹配时,HAProxy 将尝试使用没有服务器的伪造 back-end,因此 HAProxy 将尝试 return 503,这将 return 您的自定义响应文件,您已将其修改为 return 自定义 400 错误。