множество reqirep haproxy

Имам инсталиран haproxy 1.4 и трябва да конфигурирам обратен прокси в haproxy.conf, който пренаписва URL от www.somedomain.com на www.otherdomain.com/bla/ble. конфигурацията, която пиша е тук:

acl                     cpol_acl hdr_dom(host) -i www.somedomain.com
use_backend             cpol_srv if cpol_acl


backend cpol_srv
    balance                 leastconn
    mode                    http
    option                  httplog
    stick                   on src
    stick-table             type ip size 10240k expire 60m
    reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2
    reqirep                 ^Host:\ www.somedomain.com Host:\ www.otherdomain.com
    server                  cpol_srv www.otherdomain.com check port 80

Това работи, но URL адресът в браузъра се пренаписва на www.otherdomain.com/bla/ble и това не е, което искам. Ако премахна линията

reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2

Мога да препратя само към хоста www.otherdomain.com, но URL адресът в браузъра остава с www.somedomain.com.

Има ли някакъв начин да направите този тип обратен прокси, без да пренаписвате URL адреса на браузъра?

PS: Бих направил този стил на Apache (който работи), но машината няма NAT към външния свят и може да комуникира само с haproxy.


person user1866725    schedule 30.11.2012    source източник


Отговори (1)


Е, след известно време разбрах какво трябва да се направи.

Не е достатъчно да промените само заявката, но също така трябва да промените отговора обратно към първоначалния заявител на хоста. Също така беше направен acl, за да се предотврати повторението на URL частта на директорията „/bla/ble“. Придържайки се към примера по-горе, това трябва да се направи така:

    acl                     cpol_acl hdr_dom(host) -i www.somedomain.com
    use_backend             cpol_srv if cpol_acl


backend cpol_srv
    balance                 leastconn
    mode                    http
    option                  httplog
    stick                   on src
    stick-table             type ip size 10240k expire 60m
    **acl                     no_redir url_beg   /bla/ble/**

    reqirep                 ^Host:\ www.somedomain.com Host:\ www.otherdomain.com
    reqirep                 ^([^\ :]*)\ /(.*)       \1\ /bla/ble\2   **if !no_redir**


    **rspirep                 ^([^\ :]*)\ (.*)www.otherdomain.com/bla/ble/(.*)    \1\ \2www.somedomain.com/\3**

    server                  cpol_srv www.otherdomain.com check port 80
person user1866725    schedule 23.01.2013