Перенаправление HAProxy на основе пути?

Мне нужно перенаправить определенные пути на https - frontend secured Причина этого в том, что я хочу, чтобы определенные части моего веб-приложения могли работать только через https.

Я понял, как перенаправить весь трафик, изменив мою конфигурацию HAproxy следующим образом:

  frontend unsecured *:80
      #timeout     client 86400000
      #redirect    prefix http://domain.com code 301

      mode http
      timeout client 120s

Но как я могу настроить его для перенаправления только определенной подпапки в моем домене?

Я хотел бы перенаправить только следующие URL-адреса:

http://domain.com/info
http://domain.com/echo
http://domain.com/broadcast
http://domain.com/close
http://domain.com/probe
http://domain.com/cd* (wildcard)

Это возможно?


person Alosyius    schedule 22.01.2014    source источник


Ответы (2)


Вы должны использовать acl, чтобы соответствовать вашим критериям.

frontend unsecured *:80
    acl is-unsecure-path01 path_beg /info
    acl is-unsecure-path02 path_beg /echo
    acl is-unsecure-path03 path_beg /broadcast
    acl is-unsecure-path04 path_beg /close
    acl is-unsecure-path05 path_beg /probe
    acl is-unsecure-path06 path_beg /cd

    use_backend application-backend if is-unsecure-path01
    use_backend application-backend if is-unsecure-path02
    use_backend application-backend if is-unsecure-path03
    use_backend application-backend if is-unsecure-path04
    use_backend application-backend if is-unsecure-path05
    use_backend application-backend if is-unsecure-path06

backend application-backend
    redirect scheme https if !{ ssl_fc }
person user854301    schedule 29.01.2014
comment
Это полезно до тех пор, пока вы не работаете с сертификатом SSL UCC (многодоменный). Затем вам нужно связать доменное имя с контекстным путем. - person Zodzie; 08.03.2018

Этот должен сделать трюк

frontend http
    bind *:80
    acl is-secure path_reg ^\/(info|echo|close|cd.*)
    redirect scheme https code 301 if is-secure !{ ssl_fc }
    use_backend the-app unless is-secure

frontend https
    bind *:443 ssl crt /usr/local/etc/haproxy/ssl
    use_backend the-app

backend the-app
    server account-1 account:80 check

ПРИМЕЧАНИЕ. Измените путь сертификата SSL в своем приложении.

person Community    schedule 09.03.2018