Мне нужно развернуть разные приложения в одном домене, поэтому я настроил backend
для перезаписи URL с reqrep ^([^\ ]*\ /)appA[/]?(.*) \1\2
. Это работает, когда я только развертываю версию приложения HTTP или HTTPS.
Однако, если я попытаюсь перенаправить весь HTTP-трафик на HTTPS, это не сработает. Проблема в том, что HAProxy уже переписал URL и удалил часть /appA
перед перенаправлением. Таким образом, если я попытаюсь посетить http://myserver.com/appA
, страница https://myserver.com
в конечном итоге будет запрошена вместо https://myserver.com/appA
.
Я не могу поместить правило перенаправления перед правилом reqrep, так как кажется, что HAProxy должен обработать все перезаписи до перенаправлений.
Что я могу сделать, чтобы моя конфигурация работала так, как я планировал? Это должно быть очевидно, но я не могу найти подходящий ответ в Интернете.
Моя конфигурация:
frontend http_front
bind *:80
reqadd X-Forwarded-Proto:\ http
acl appA_url url_beg /appA
use_backend appA if appA_url
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/myserver.com.pem
reqadd X-Forwarded-Proto:\ https
acl appA_url url_beg /appA
use_backend appA if appA_url
backend appA
reqrep ^([^\ ]*\ /)appA[/]?(.*) \1\2
redirect scheme https if !{ ssl_fc }
balance roundrobin
server web1 127.0.0.1:5001 check