【问题标题】:HAProxy redirect scheme not working as documentedHAProxy 重定向方案未按记录工作
【发布时间】:2014-01-27 21:07:31
【问题描述】:

我在 LB 后面运行 HAProxy 1.4.24。 SSL 在 LB 上终止。我想将http请求重定向到https。我有以下配置:

log         127.0.0.1 local2
chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon

# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
  mode                    http
  log                     global
  option                  httplog
  option                  dontlognull
  option http-server-close
  option forwardfor       except 127.0.0.0/8
  option                  redispatch
  retries                 3
  timeout http-request    10s
  timeout queue           1m
  timeout connect         10s
  timeout client          1m
  timeout server          1m
  timeout http-keep-alive 10s
  timeout check           10s
  maxconn                 3000

frontend  httpIn *:7258
  maxconn             100000
  option forwardfor   header x-forwarded-for
  acl is_http hdr(X-Forwarded-Proto) http
  redirect scheme https code 301 if is_http
  default_backend             app

backend app
 balance     roundrobin
 cookie      LBSTICKY insert indirect nocache httponly secure maxlife 8h
 server  app1 10.10.10.10:8080 cookie app1
 server  app2 10.10.10.11:8080 cookie app2

我的问题是线路

redirect scheme https code 301 if is_http

运行haproxy -f /etc/haproxy/haproxy.cfg -c时会产生以下错误:

[ALERT] 026/210541 (8482) : parsing [/etc/haproxy/haproxy.cfg:67] : 'redirect' expects 'code', 'prefix', 'location', 'set-cookie', 'clear-cookie', 'drop-query' or 'append-slash' (was 'scheme').`

我重新检查了文档,上面说我使用了正确的重定向语法。有什么想法吗?

【问题讨论】:

    标签: haproxy


    【解决方案1】:

    redirect scheme 在 HAProxy 1.4.24 中确实不可用。目前,它在 HAProxy 1.5-dev13 和更高版本以及 HAProxy 1.4.25 和更高版本中可用,包括haproxy-1.4 master

    您查看的文档可能是 by Cyril Bonté,它当前是从 1.4 主版本生成的,而不是 1.4.24 版本。

    因此,您可以升级到指定版本之一或解决限制。一个常见的解决方法是像这样使用redirect prefix

    redirect prefix https://domain.com if is_http { hdr(host) -i domain.com }
    

    必须为您希望发生重定向的每个主机名枚举此规则。

    【讨论】:

    • 谢谢!我以为他们在最后稳定的 1.4.24 停止了开发。如果有人有兴趣,这里是 source code 来编译。
    • 对于像我这样使用 Debian 或 Ubuntu 的人,我发现这个站点对于设置正确的 apt 源以安装新版本非常有帮助:haproxy.debian.net
    【解决方案2】:

    此选项在 HAProxy 1.5 上可用... 为此,您必须在 1.4 分支中使用重定向位置。

    巴蒂斯特

    【讨论】:

    • 我对使用 1.5 犹豫不决,因为它仍在开发中。我希望在我的应用投入生产时它会稳定。
    • @r7p 所有软件(或至少您要使用的软件)“仍在开发中”。仅仅因为有人在某个软件上贴了一个“稳定”标签,它就不会比没有这个标签的软件更稳定或更不可用。您仍然需要测试事情是否适合您。
    猜你喜欢
    • 2014-12-08
    • 2017-07-30
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2015-03-15
    • 2015-04-03
    相关资源
    最近更新 更多