【问题标题】:Use haproxy to redirect *.domain1.com/* to *.domain2.com/*使用 haproxy 将 *.domain1.com/* 重定向到 *.domain2.com/*
【发布时间】:2018-01-23 23:28:30
【问题描述】:

不幸的是,我在一些 HAproxy 规则上苦苦挣扎,但没有运气。

假设我有 domain1.com 和 domain2.com。我想将 domain1.com 中的所有内容重定向到 domain2.com,包括子域和参数。

例如:

  • foo.domain1.com => foo.domain2.com
  • foo.domain1.com/?bar => foo.domain2.com/?bar
  • domain1.com/?bar => domain2.com/?bar

我已尝试使用 reqrep ^([^\ ]*\) (.*)domain1.com(.*) 1/ domain2.com\2,但它不起作用。

有什么想法吗?

【问题讨论】:

    标签: server load-balancing haproxy


    【解决方案1】:

    这是实现这一目标的一种方法。

    acl domain_redirect hdr_end(host) -i domain1.com
    http-request set-var(req.new_host) req.hdr(host),regsub(domain1\.com$,domain2.com,i) if domain_redirect
    http-request redirect prefix https://%[var(req.new_host)] code 301 if { var(req.new_host) -m found }
    

    我认为这个解决方案只有一个缺点:它似乎丢弃了 URL 中的锚点。例如:

    domain1.com?foo=bar#ze-anchor -> domain2.com?foo=bar
    

    【讨论】:

      【解决方案2】:

      把它放在你的frontend 块中:

      redirect prefix http://domain2.com code 301 if { hdr(host) -i domain1.com }.

      与此相同的答案:https://stackoverflow.com/a/19826989/255523

      【讨论】:

      • 这仅处理其中一种情况(domain1.com/?bar -> domain2.com/?bar)。
      猜你喜欢
      • 2019-08-20
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 2019-03-05
      • 2020-07-23
      相关资源
      最近更新 更多