首页 > 解决方案 > HaProxy:从标头中获取字符串

问题描述

我有一个 007 任务:将 HaProxy 设置为从 CDN 发送的标头中获取字符串,如果检测到字符串,HaProxy 将仅允许对后端服务器的 HTTPS 请求。目标是阻止我们的 CDN 以外的非授权访问到达后端服务器。

到目前为止我最接近的。

前端:

acl allow_traffic_from_cdn req.hdr(STRING NAME HERE) -m str (STRING VALUE HERE)
http-request deny if !allow_traffic_from_cdn

当我尝试通过 CDN 访问服务器时,haproxy.log确实显示了我期望的字符串,但仅此而已。只能访问主页,如果您尝试不访问任何其他页面,则会收到错误消息:(

我一直在阅读文档,但我无法完全理解此过程。

那么,如何设置 haproxy 以从允许访问的标头中获取值,但如果 HTTPS 请求没有访问,则阻止访问?

谢谢

...

标签: regexsecurityhttpsaclhaproxy

解决方案


您可以创建 ACL 来搜索标头及其值是否存在。然后,拒绝所有缺少此 ACL 的请求:

 acl from_cdn hdr(X-my-cdn-header) -i "your header value"
 http-request deny if !from_cdn

推荐阅读