0

我有 openshift可扩展播放应用程序我的问题是我无法强制使用 https,我只想提供以/portal或开头的 URL/api

因此,如果我点击类似https://www.example.com我不想让 haproxy 关心它的内容,因为我已经有一个 WordPress 服务于主网站,但是如果我点击“ https://www.example.com/api ”,那么 HAProxy 必须参与其中并且负载平衡器应该在自动缩放的齿轮之间工作。

我为 HAProxy 配置尝试了许多答案,包括文档: http ://cbonte.github.io/haproxy-dconv/1.4/configuration.html#4.2-redirect%20scheme 和 https://developers.openshift.com/faq/ Troubleshooting.html#_how_do_i_redirect_traffic_to_https 甚至 https://github.com/openshift/origin/blob/master/images/router/haproxy/conf/haproxy-config.template

类似的东西redirect scheme https if !{ ssl_fc }根本没有帮助。

没有任何帮助,一旦我添加frontend它就停止工作,并且我在我的应用程序设备中的任何地方都看不到日志文件。

我怎么能做到这一点?

以下是我的haproxy.cfg

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                 128

listen stats 127.9.3.131:8080
    mode http
    stats enable
    stats uri /

listen express 127.9.3.130:8080

    cookie GEAR insert indirect nocache
    option httpchk GET /portal
    http-check expect rstatus 2..|3..|401

    balance leastconn
    server local-gear 127.9.3.129:8080 check fall 2 rise 3 inter 2000 cookie local-xxxxxxxxxx
4

1 回答 1

1

我通过提供特定模式解决了这个问题,但不是 https,https 的问题是 Openshift Cloud v2 中使用的 HAProxy 版本太旧,他们拥有的旧版本不支持 https,甚至版本的后期补丁1.4没有应用,Openshift的HAProxy的版本是:HAProxy version 1.4.22, released 2012/08/09!严重地!正如我在 HAProxy 的文档中看到的那样,最新的次要版本是 1.4.27 足以解决这个问题。

所以为了强制使用 HTTPS,我从我的应用程序而不是 HAProxy 中完成了这一步。

无论如何,为了提供特定模式(在我的示例中,我只为 /api 和 /portal 服务),配置文件更改为类似于以下代码的内容,请注意,我删除了listenand 使用backendandfrontend代替:

frontend express
    acl api path_beg -i /api
    acl portal path_beg -i /portal
    bind 127.9.3.130:8080
    use_backend servers if api
    use_backend servers if portal
    default_backend website
    cookie GEAR insert indirect nocache

backend servers
    option httpchk GET /portal
    http-check expect rstatus 2..|3..|401
    balance leastconn
    server local-gear 127.9.3.130:8080 check fall 2 rise 3 inter 2000 cookie local-xxxxxxxxxx

backend website
    balance leastconn
    server webserver DOMAIN_IP

请注意以下事项:

  • 在更改之前始终备份旧配置文件。
  • 使用原始配置文件中提供的本地IP,复制/粘贴上面的代码肯定行不通,也请务必替换xxxxxxxxxx为原始配置文件中提供的齿轮ID。

PS: Openshift online v2 已弃用,并且从明年 8 月开始也将停止接受任何新帐户,v3 应该会更好,但直到现在它仍然是一个尚未公开的“预览版”。

于 2017-01-15T14:05:52.253 回答