如何使用 HAProxy 发送响应而不将请求传递到 Web 服务器

2024-01-12

服务器正在接收数千条OPTIONS请求由于CORS(跨源资源共享)。现在,每个选项请求都被发送到其中一台服务器,这有点浪费,因为知道 HAProxy 可以添加CORS标头本身无需网络服务器的帮助。

frontend https-in
    ...
    use_backend cors_headers if METH_OPTIONS
    ...

backend cors_headers
    rspadd Access-Control-Allow-Origin:\ https://www.example.com
    rspadd Access-Control-Max-Age:\ 31536000

但是,为了使其工作,我需要在中指定至少一台实时服务器cors_headers后端和该服务器仍将接收请求。

如何在不指定任何服务器的情况下在后端处理请求?如何停止向服务器传播请求,同时将响应发送到浏览器并保持连接处于活动状态?


好消息,HAProxy 2.2刚刚推出 https://www.mail-archive.com/haproxy@formilux.org/msg37852.html“本机响应生成器”功能。它与http-request return https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#http-request%20return指令,可用于提供静态文件或文本字符串,包括动态参数。 目标是避免常见的黑客行为errorfile.

利用 2.2 版本中引入的另一个指令(http-after-response https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#4.2-http-after-response),OP目标可以通过以下方式实现:

backend cors_headers
    # http-response won't work here as the response is generated by HAP
    http-after-response set-header Access-Control-Allow-Origin \
        "%[req.hdr(Origin)]"
    http-after-response set-header Access-Control-Max-Age "31536000"
    http-request return status 200 content-type "text/plain" string "" if TRUE

The set-header and http-request return可以用以下条件设置if基于请求标头或来源的子句,具体取决于您的需求(请参阅文档以获取示例)。

通过这种技术,标头和响应可以使用变量:

http-request return status 200 content-type "text/plain" \
    lf-string "Hello, you are: %[src]"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 HAProxy 发送响应而不将请求传递到 Web 服务器 的相关文章

随机推荐

  • 删除通过绑定添加的事件侦听器

    在 JavaScript 中 删除使用 bind 添加为事件侦听器的函数的最佳方法是什么 Example function constructor MyClass function this myButton document getEle
  • 远程调试时pdb如何定位(VS 2008)

    当调试器附加到远程服务器上的进程时 在哪些位置搜索 pdb 按什么顺序 例如 是在远程服务器 调试者 还是本地客户端 调试器 上搜索 当我使用调试器从特定位置手动加载 pdb 文件时 调试器是在本地查找文件还是远程调试器监视器在查找文件 有
  • Jersey:打印实际请求

    如何查看 Jersey 生成并发送到服务器的实际请求 我遇到了特定请求的问题 运行网络服务器的人要求查看完整的请求 带有标头等 如果您只是使用 Jersey Client API 日志过滤器 https jersey java net no
  • 仅当满足特定条件时才选择最后一条记录

    我有一个表 其中包含 ID WorkerID IsActive 标志 1 或 0 和 LocalTime 每次工作人员处于活动或不活动状态时 都会创建一条记录 其中包含 WorkerID 1 或 0 标志记录以及时间 LocalTime 我
  • 如何使用 java.util.Optional 生成 JaxB 类?

    我使用 jaxb2 maven plugin 从给定的 XSD 生成 JaxB Class 效果很好 但现在我想在生成的类中使用 java util Optional 但 JaxB 生成的类没有可选值 所以我被迫对每个变量进行空检查 有人知
  • boost::condition_variable - 将 wait_for 与谓词一起使用

    我想等待某个条件一段时间 我阅读了 boost 文档 似乎最好使用该函数wait for带有谓词 如所描述的here http www boost org doc libs 1 53 0 doc html thread synchroniz
  • coq 中的依赖模式匹配

    以下代码 当然不是完整的证明 尝试对依赖产品进行模式匹配 Record fail Set mkFail i nat f forall x x lt i gt nat Definition failomat forall m nat f fo
  • JQuery 1.8 Datatables 通过单击按钮保存状态

    我有一个 jsp 其中有一个表和两个按钮 home 和 back 并在其中导入了 jquery datatable js 单击 主页 时 应该加载页面 而不保存任何分页或过滤器 单击 返回 后 表格应该保存所有过滤器和分页 我尝试在初始化数
  • 如何设计具有复杂初始化的不可变对象

    我正在学习 DDD 并发现 值对象 应该是不可变的 我理解这意味着对象状态在创建后不应更改 这对我来说是一种新的思维方式 但在很多情况下都是有意义的 好的 所以我开始创建不可变的值对象 我确保他们将整个状态作为构造函数的参数 我不添加属性设
  • Angular 4:无法读取未定义的属性“http”

    我有一个带有确认框的 AlertService 我从我的服务中调用它 如果用户点击 是 那么我想调用 REST 服务 但我收到此错误 我相信因为我是从alertService confirm 内部调用的 并且alertService没有声明
  • 如何将具有多个源子目录的 Make 和 Autotools 项目迁移到 CMake?

    我目前正在使用递归 make 和自动工具 并希望迁移到 CMake 以获得如下所示的项目 lx project root src lx c contains main method conf c util str c str h etc c
  • D3D12 使用后缓冲表面作为无序访问视图(无人机)

    我正在为一个学校项目制作一个简单的光线跟踪器 计算着色器应该用于对三角形或其他一些图元进行着色 为此 我想直接在计算着色器中写入后台缓冲区表面 然后立即呈现结果 我确信这在 DX11 中是可能的 尽管我似乎无法让它在 DX12 中工作 我无
  • 我可以使用 OpenGL 进行离屏渲染吗? [复制]

    这个问题在这里已经有答案了 我想尝试制作一个简单的程序 它采用 3D 模型并将其渲染为图像 有什么方法可以使用 OpenGL 渲染图像并将其放入保存图像而不是显示图像的变量中吗 我不想看到我正在渲染的内容 我只想保存它 有什么办法可以用 O
  • 无法重定向到下一页

    我使用的是 Win XP 操作系统和 XAMPP 我使用 eclipse 作为编辑器 在 Eclipes 中 我无法重定向下一页 所以现在我已经安装了 Zend 开发环境 现在我也遇到了同样的问题 我的代码是 主页 php
  • 使用 api 获取 Google 云端硬盘视频嵌入代码

    大家好 我正在开发一个项目 我需要在网页上专门显示来自我的谷歌驱动器的视频 我不想手动选择视频并复制其嵌入代码 有没有办法我们可以使用 google api 首选 PHP 获取视频的嵌入代码 这样我就可以在 iframe 中使用此代码并显示
  • 如何限制 XSLT 1.0 中的字符串字数?

    如何限制 XSLT 1 0 中字符串的字数 怎么样
  • 如何从 Thread.currentThread().getStackTrace() 获取方法签名(而不是方法名称)?

    假设我有以下方法及其调用 public static void main String args zoo public static void zoo zoo 0 public static void zoo int i too i pub
  • Maven 和 Protobuf 编译错误:无法在包 com.google.protobuf 中找到符号

    我是 Linux 和 Protobuf 的新手 我需要帮助 我正在尝试 mvn package 一个包含许多 proto 文件的项目 当然还有一个 pom xml 文件 我正在 Ubuntu 上工作 ERROR 当我运行 mvn packa
  • 使用 Amazon Route 53 为 S3 存储桶设置 CNAME

    我需要以下网址 http liangpai s3 amazonaws com uploadImage shareImage 2012 10 506dc1ef71dcf png http liangpai s3 amazonaws com u
  • 如何使用 HAProxy 发送响应而不将请求传递到 Web 服务器

    服务器正在接收数千条OPTIONS请求由于CORS 跨源资源共享 现在 每个选项请求都被发送到其中一台服务器 这有点浪费 因为知道 HAProxy 可以添加CORS标头本身无需网络服务器的帮助 frontend https in use b