Принудительный картридж https HAProxy в openshift и включен только для определенных шаблонов URL-адресов.

У меня есть openshift масштабируемое игровое приложение. Моя проблема в том, что я не смог принудительно подключить https, и я хочу только для обслуживания URL-адресов, начинающихся с /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%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

person Al-Mothafar    schedule 31.12.2016    source источник


Ответы (1)


Я решил проблему, используя определенный шаблон, но не https, проблема с https заключается в том, что версия HAProxy, которая используется в Openshift Cloud v2, слишком старая, https не поддерживается в старой версии, которая у них есть, и даже более поздние исправления для версии 1.4 не применяются, версия Openshift HAProxy: HAProxy version 1.4.22, released 2012/08/09! ШУТКИ В СТОРОНУ! последней минорной версии 1.4.27 было достаточно, чтобы решить эту проблему, как я вижу в документации HAProxy.

Поэтому, чтобы принудительно использовать HTTPS, я сделал этот шаг из своего приложения вместо HAProxy.

В любом случае, для обслуживания определенных шаблонов (в моем примере я работаю только для /api и /portal) файл конфигурации изменился на что-то вроде следующего кода, обратите внимание, я удалил listen и вместо этого использовал backend и frontend:

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 идентификатором вашего устройства, указанным в исходном файле конфигурации.

P.S: Openshift Online v2 устарел, и он перестанет принимать любые новые учетные записи со следующего августа, v3 должен быть лучше, но до сих пор это все еще «предварительная версия», еще не общедоступная.

person Al-Mothafar    schedule 15.01.2017