reverse-proxy - 多个 reqirep haproxy

标签 reverse-proxy haproxy

我安装了 haproxy 1.4,需要在 haproxy.conf 中配置反向代理,将 URL 从 www.somedomain.com 重写为 www.otherdomain.com/bla/ble。我正在编写的配置在这里:

acl                     cpol_acl hdr_dom(host) -i www.somedomain.com
use_backend             cpol_srv if cpol_acl


backend cpol_srv
    balance                 leastconn
    mode                    http
    option                  httplog
    stick                   on src
    stick-table             type ip size 10240k expire 60m
    reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2
    reqirep                 ^Host:\ www.somedomain.com Host:\ www.otherdomain.com
    server                  cpol_srv www.otherdomain.com check port 80

这是有效的,但浏览器中的 URL 确实会重写为 www.otherdomain.com/bla/ble 这不是我想要的。如果我删除该行

reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2

我只能转发到主机 www.otherdomain.com,但浏览器中的 URL 仍为 www.somedomain.com

有没有办法在不重写浏览器 URL 的情况下进行这种类型的反向代理?

PS:我会做这种 Apache 风格(可行),但机器没有任何通往外部世界的 NAT,只能与 haproxy 通信。

最佳答案

好吧,过了一会儿我想出了必须做什么。

仅更改请求是不够的,还必须将响应更改回原始请求主机。它还创建了一个 acl 来防止重复目录 url 部分“/bla/ble”。坚持上面的例子,应该像这样完成:

    acl                     cpol_acl hdr_dom(host) -i www.somedomain.com
    use_backend             cpol_srv if cpol_acl


backend cpol_srv
    balance                 leastconn
    mode                    http
    option                  httplog
    stick                   on src
    stick-table             type ip size 10240k expire 60m
    **acl                     no_redir url_beg   /bla/ble/**

    reqirep                 ^Host:\ www.somedomain.com Host:\ www.otherdomain.com
    reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2   **if !no_redir**


    **rspirep                 ^([^\ :]*)\ (.*)www.otherdomain.com/bla/ble/(.*)    \1\ \2www.somedomain.com/\3**

    server                  cpol_srv www.otherdomain.com check port 80

关于reverse-proxy - 多个 reqirep haproxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649798/

相关文章:

iis-7 - HTTP 错误 500.52 - URL 重写模块错误。

reverse-proxy - 我可以使用 asp.net mvc 通过 appharbor.com 的免费计划部署反向代理服务器吗

validation - HAproxy+Lua : Return requests if validation fails from Lua script

proxy - haproxy/docker 未找到启用的监听器(检查 'bind' 指令)!退出

asp.net-mvc - 如何在IIS/ASP.NET网站上使用清漆/鱿鱼?

nginx - 如何强制 Nginx 针对上游服务器 block 中存在的主机名验证上游证书?

windows - Apache 代理 - HTTP 到 HTTPS

基于查询字符串的 Haproxy 路由流量

linux - 无法使用 HAProxy 将客户端 IP 转发到服务器

java - 可扩展的java web APP openshift - 503错误HAProxy