HAProxy:带有重定向的 hdr_dom(host)

2024-01-14

我们有几个 haproxy 配置大部分运行良好。 在我们的场景中,我们只是根据域名路由请求。 以下是一个域(drawmessage.com)的示例:

frontend http
    bind *:80

    redirect prefix http://app.drawmessage.com code 301 if { hdr_dom(host) -i www.app.drawmessage.com }
    redirect prefix http://drawmessage.com code 301 if { hdr_dom(host) -i www.drawmessage.com }

    redirect prefix https://drawmessage.com code 301 if { hdr_dom(host) -i drawmessage.com }

    use_backend http:app.drawmessage.com if { hdr_dom(host) -i app.drawmessage.com }
    use_backend http:app.drawmessage.com if { hdr_dom(host) -i app-drawmessage-com.d250.hu }
    use_backend http:drawmessage.com if { hdr_dom(host) -i drawmessage.com }
    use_backend http:drawmessage.com if { hdr_dom(host) -i drawmessage-com.d250.hu }

还有其他域,仅针对该域进行过滤。正如您所看到的,在重定向 www 后,我们对 drawmessage.com 应用了特殊的重定向,但理论上不适用于 app.drawmessage.com。

frontend https
     bind *:443 ssl crt /var/haproxy

     redirect prefix https://app.drawmessage.com code 301 if { hdr_dom(host) -i www.app.drawmessage.com }
     redirect prefix https://drawmessage.com code 301 if { hdr_dom(host) -i www.drawmessage.com }

     use_backend https:app.drawmessage.com if { hdr_dom(host) -i app.drawmessage.com }
     use_backend https:app.drawmessage.com if { hdr_dom(host) -i app-drawmessage-com.d250.hu }
     use_backend https:drawmessage.com if { hdr_dom(host) -i drawmessage.com }
     use_backend https:drawmessage.com if { hdr_dom(host) -i drawmessage-com.d250.hu }

问题是,实际上,我们不希望子域 app.drawmessage.com 重定向到 https,但由于我们有该域的重定向,因此重定向规则适用于这两个域。以某种方式重新排序规则,以便排序与我们想要实现的配置相匹配,确实会产生相同的结果,并且我们会收到 haproxy 警告:

a 'redirect' rule placed after a 'use_backend' rule will still be processed before.

如果配置行的顺序影响处理请求的顺序,因此顺序本身就是一个配置参数,为什么重定向规则在 use_backend 规则之前处理? ...

有人建议如何通过正确的重定向首选项实现基于域的路由吗?我更喜欢一种干净简单的方式,..


不要使用hdr_dom()。只需使用hdr().

redirect prefix https://drawmessage.com code 301 if { hdr(host) -i drawmessage.com }

The _dom后缀意味着您希望将稍后给出的值与指定标头中找到的任意数量的完整、连续的类似域名的标记进行匹配,因此您提供的模式必须从字符串的开头开始or紧接着.并且必须在字符串的末尾结束or紧接着是.。这不是你想做的,所以hdr_dom()不是正确的使用方法。

该符号可能意味着您正在比较左值与右值,但实际上比较是右值与左值。

放置在“use_backend”规则之后的“redirect”规则仍将在之前处理因为这些指令是由 HAProxy 代码的不同部分在请求处理的不同阶段处理的。在每类规则中,顺序都会被保留,但重定向会在请求处理的开始处进行处理,后端选择会在请求处理的结束处进行处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HAProxy:带有重定向的 hdr_dom(host) 的相关文章

  • haproxy 配置详解

    说明 xff1a 1 haproxy的配置段有 34 global 34 xff0c 34 defaults 34 34 listen 34 34 frontend 34 和 34 backend 34 等 global 配置中的参数为进程
  • 负载均衡集群HAProxy讲解篇

    负载均衡集群 HAProxy 讲解篇 一 HAProxy组成部分 Haproxy配置中分成五部分内容 xff0c 当然这些组件不是必选的 xff0c 可以根据需要选择作为配置 1 global xff1a 参数是进程级的 xff0c 通常和
  • haproxy使用技术及配置详解

    以下内容来源于网络 xff0c 感谢原作者 性能 HAProxy借助于OS上几种常见的技术来实现性能的最大化 单进程 事件驱动模型显著降低了上下文切换的开销及内存占用 O 1 事件检查器 event checker 允许其在高并发连接中对任
  • centos7.5部署高可用k8s(一) ---- 部署LB负载均衡haproxy+keepalived

    在centos7 5系统部署一个k8s高可用集群 k8s版本采用v1 15 2 docker版本18 09 根据官方的文档 xff0c 部署集群前首先要部署负载均衡器 xff0c 这里简要记录下LB负载均衡器的部署过程 环境说明 节点IP备
  • HAProxy--理论--07--HAProxy监控页面

    HAProxy 理论 07 HAProxy监控页面 1 页面 2 说明 2 1 Queue cur 当前队列的请求数量 Max 当前队列最大的请求数量 Limit 队列的限制数量 2 2 Session rate Cur 每秒会话连接数量
  • 第二篇:mysql负载均衡、高可用方案:mysqlcluster+haproxy+keepalived

    上一篇介绍了mysqlcluster的安装和配置 本篇将描述高可用的mysql集群组建方式 高可用的mysql集群有多种方式 本篇介绍的是 mysqlcluster haproxy keepalived方案 下篇将介绍通过普通版本的mysq
  • HAProxy的安装及常用配置中文注释

    一 HAProxy的安装 1 Centos安装 yum install haproxy 2 Ubuntu 安装 apt get install haproxy 3 编译安装 1 安装前准备 yum install gcc gcc c gli
  • Grafana自定义变量使用笔记

    简介 随便记录一下 为什么要使用自定义参数 用这个有啥好处 我们在使用Grafana来配置看板时经常遇到一个指标有多台主机需要添加监控 这就让添加过程重复做 而且当我们添加新的node时还要来添加监控项目 烦死了 有没有好的方法能自动遍历呢
  • HAProxy--理论--01--简介

    HAProxy 理论 01 简介 1 HAProxy 是一款提供高可用性 负载均衡以及基于TCP 第四层 和HTTP 第七层 应用的代理软件 支持虚拟主机 它是免费的 适用于那些负载特大的web站点 这些站点通常又需要会话保持或七层处理 H
  • 如何在 Openshift3 中禁用粘性会话

    如果您在 Openshift3 中扩展 Pod 来自同一客户端 IP 地址的所有请求都会发送到具有关联会话的容器 是否有任何配置可以禁用粘性会话 如何管理 Openshift 中内部 HAProxy 的选项 对于后代 由于我遇到了同样的问题
  • 使用haproxy的http请求到https请求

    我有一种情况 我想使用 haproxy 将所有 http 请求重定向到 https 请求 假设我有一台安装了 haproxy 的服务器 x 和一台运行实际服务的服务器 y 使用 ssl 现在 我希望 haproxy 接受 http 请求并通
  • HTTP 标头中的额外空间在 HAProxy 上导致 400 错误

    我们最近从 Citrix 切换到 HAProxy 来实现负载平衡 问题是 对于某些请求 HAProxy 开始给出 400 错误 过去在 citrix 上运行良好 因此 我们暂时从基于 HTTP 的负载平衡转向基于 TCP 的负载平衡 经过进
  • 如何根据请求正文使用 HAProxy 路由流量(反向代理)

    我尝试根据下面的 POST 正文中标识的 URL 将以下请求路由到适当的服务器 我希望通过使用 HAProxy 的反向代理来完成此任务 例如 我想将所有请求定向到 HAProxy 然后让 HAProxy 检查 POST 正文中是否存在某些值
  • 自 Node v0.12.2 起的负载平衡 - 集群、pm2 或 nginx

    对于 Node v0 12 2 集群模块支持循环 RR 负载平衡 https strongloop com strongblog whats new in node js v0 12 cluster round robin load bal
  • 基于 HAProxy 中的上下文路径动态路由到后端

    我有具体要求 根据我的上下文路径 我必须通过 HAProxy 将流量重定向到不同的服务器 端口 我已经通过 ACL 中的 path beg 实现了相同的效果 下面是配置 use backend a1 if path beg a1 use b
  • HAProxy 中的 JWT 验证

    我有一个 HAProxy 配置为接受对 mysubdomain com 的请求 HAProxy 将解析子域 来自 prod mysubdomain com 或 dev mysubdomain com 的 prod 或 dev 并转发到正确的
  • 如何访问 docker-compose 在 haproxy 配置中创建的副本

    我有一个简单的 haproxy cfg 如下所示 frontend http bind 8080 mode http use backend all backend all mode http server s1 ws 8080 现在我有一
  • HAPROXY 中 ACL 子域中的通配符

    尝试在 haproxy 中匹配以下内容 acl instagiveweb hdr beg host i foo something com 网址可能在哪里foo staging something com or foo something
  • 无法将 HAProxy 实现为 HTTPS 的转发代理

    我正在尝试使用 HAProxy 作为转发代理 它适用于 HTTP 但不适用于 HTTPS 下面是我的 HTTP HAProxy 配置 listen forward http proxy bind 80 http request do res
  • HAProxy - 如果第一台机器返回 404,则从第二台机器提供 URL

    我遇到过这样的情况 网站的一部分 某些 URL 路径 由一台后端服务器提供服务 而所有其他 URL 则由 HAProxy 中的不同默认后端提供服务 现在 由于应用程序逻辑的编写方式 可以在两台物理服务器计算机中的任意一台上的同一路径上创建要

随机推荐

  • python 函数默认参数只计算一次? [复制]

    这个问题在这里已经有答案了 我是一个Python初学者 正在阅读 Python教程 它说如果我们有一个函数 def f a L L append a return L print f 1 print f 2 print f 3 这将打印 1
  • JavaScript 验证足以保证我的表单安全吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在建立一个网站 我对登录 注册页面上的表格有疑问 我在登录页面上有一些标准的 javascript 验证 我的问题是 如果禁用了 javas
  • 如何在Android Q中从Uri获取图像的实际路径?

    我正在使用相机拍照并从图库中进行选择 之后进行压缩以减小文件大小 我正在使用getRealPathFromURI 获取实际图像路径的方法 但在 Android Q 中MediaStore Images Media DATA已弃用 fun g
  • QML 中是否有来自 TreeView 的本机数据模型?

    QT 文档暗示 QAbstractItemModel 的任何实现都可以用于 TreeView 这些模型通常是用C 编写的 目前还不方便 那么是否有可以在树视图中使用的原生 QML 模型 我可以从 C 设置 QStandardItemMode
  • 如何将列表中的位置绑定到该元素的属性?

    我有一个ObservableList
  • MySQL 错误:“列‘columnname’不能是 FULLTEXT 索引的一部分”

    最近 我将一堆列更改为 utf8 general ci 默认的 UTF 8 排序规则 但是当尝试更改特定列时 我收到了 MySQL 错误 Column node content cannot be part of FULLTEXT inde
  • Ruby 中的 Java CLASSPATH 相当于什么?

    我想从任何地方运行 ruby 程序 我想我已经明白它是RUBYLIB 但我无法让它发挥作用 你能举例说明吗 您需要操纵加载路径 LOAD PATH 这是用完成的 I directories 目录之间用 在类 Unix 系统上并且由 在 DO
  • 如何在caret包中的指定网格中随机搜索?

    我想知道是否可以在预定义的网格中使用随机搜索 例如 我的网格有alpha and lambda for glmnet方法 alpha介于 0 和 1 之间 并且lambda介于 10到10之间 我想使用随机搜索5次来随机尝试这个范围内的点
  • Angular 2 场遮蔽

    我想屏蔽一个字段 例如 有 10 位数字的电话号码 123 123 1234 我需要以 xxx xxx 1234 的方式屏蔽 另外 在提交页面时 我需要将原始变量 123 123 1234 发送到服务 任何帮助将不胜感激 Thanks 这是
  • swagger-ui 和 spring webflux 出现 404 错误

    我正在使用 Spring Webflux 开发 REST 服务 并且我想使用 Swagger2 为我的 API 生成文档 我发现 Webflux 仅支持 Swagger2 版本 3 0 0 快照 这是我的配置 java 11 maven 3
  • 模拟器:警告:本机不支持快速启动/快照

    我开始学习android 但还没有取得任何进展 我按照说明下载了 android studio 并尝试设置 AVD 我正在使用带有 java 1 8 0 51 的 Mac Air macOS High Sierra 当我启动 AVD 时 事
  • 爬山算法简单例子

    我对爬山算法有点困惑 我想 运行 该算法 直到我找到该树中的第一个解决方案 a 是初始状态 h 和 k 是最终状态 并且它表示状态附近的数字是启发值 这是树 我的问题 我正在尝试在树上爬山 所以好吧 我们开始 a gt f gt g 然后完
  • Java什么时候有了JIT编译器?

    Java 何时首次获得用于生产代码的 JIT 编译器 http java sun com features 2000 06 time line html http java sun com features 2000 06 time lin
  • 列表 Cubit Flutter 中的 UpdateValue

    在应用程序中我使用的是 Cubit ItemData 从 firestore 获取 一切正常 但在列表中添加项目并更新 firestore 中的值 名称 后 列表中仍然是旧值 怎么解决呢 class TestPage extends Sta
  • Android 的 OAuth

    我正在尝试访问 Yelp API 我已经获得了我的钥匙 并阅读了大约 40 篇文章来解释我需要做什么 并且我已经尝试了一切 密钥和非密钥均有效 我得到以下信息 05 16 17 39 54 955 E AndroidRuntime 538
  • Admob 不展示测试广告,也不展示真实广告

    我已经在 Admob 广告上苦苦挣扎了近一周 我在互联网上搜索了所有可能的解决方案 但没有任何效果 我的 Android 应用程序不显示测试广告或实时广告 这是日志 I Ads Updating ad debug logging enabl
  • CWInterface 不返回数据

    我尝试收集有关 CWInterface 当前状态的一些信息 已连接的 bssid 可用的接入点 并通过 udp 定期 每 5 10 秒 将它们发送到服务器 我的问题是 一段时间后 在某些具有不同收集 发送间隔的测试中为 30 到 50 分钟
  • MySQL .cs​​v 加载由于“无法添加或更新子行:外键约束失败”而失败

    我正在尝试将包含棒球赛程表的 csv 文件加载到游戏表中 csv 文件内容如下所示 5 17 2011 8 10 PM 14 13 Kansas City MO 5 18 2011 8 10 PM 14 16 Chicago IL 5 19
  • 如何根据节点将一个XML文件拆分为多个XML文件

    我有一个 XML 文件 如下所示
  • HAProxy:带有重定向的 hdr_dom(host)

    我们有几个 haproxy 配置大部分运行良好 在我们的场景中 我们只是根据域名路由请求 以下是一个域 drawmessage com 的示例 frontend http bind 80 redirect prefix http app d