在openshift中强制https HAProxy盒式磁带,仅对特定的URL模式启用

时间:2016-12-31 16:05:57

标签: haproxy openshift-enterprise

我有openshift scalable play application我的问题,我无法强制使用https,我只想提供以/portal/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%20schemehttps://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

1 个答案:

答案 0 :(得分: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服务)配置文件改为类似下面的代码,请注意,我删除了listen并使用了{ {1}}和backend代替:

frontend

请注意以下事项:

  • 在更改之前始终备份旧的配置文件。
  • 使用原始配置文件中提供的本地IP,复制/粘贴上面的代码肯定不起作用,同时务必将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 替换为原始配置文件中提供的齿轮ID。< / LI>

<强> P.S: Openshift online v2已被弃用,从明年8月起它也将停止接受任何新帐户,v3应该会更好,但直到现在它仍然是预览&#34;尚未公开发布。