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请求没有访问权限,则阻止访问?

谢谢

...

解决方法

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

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...