1

У меня есть сервер Ubuntu 12.04.3, настроенный как DNS-сервер (BIND9), веб-сервер (Apache2) и обратный прокси-сервер (haproxy). Моя цель - перенаправить haproxy на некоторые другие серверы в сети, некоторые из которых я хочу перенаправить на «суб URL» (не уверен, что это правильный термин. Пожалуйста, смотрите пример ниже)

пользователь переходит на "monitor.example.com"> перенаправления haproxy на> "1.1.1.1:80/nagios"

Мой DNS-сервер настроен с использованием подстановочных субдоменов, и сейчас, если я зайду на monitor.example.com, он перейдет на страницу apache по умолчанию на сервере мониторинга, но это будет выглядеть намного лучше и будет намного короче, если я наберу может заставить его направить на страницу /nagios автоматически. Если я зайду на monitor.example.com/nagios, он будет работать, как и ожидалось, но это немного излишне.

Я потратил некоторое время на поиски решения, но мне не повезло найти ответ на мой вопрос. У кого-нибудь есть идеи, если это возможно, и если да, то как я могу решить это? Вот мой файл haproxy.conf:

global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    #chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    #debug
    #quiet

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 2000
    contimeout      5000
    clitimeout      50000
    srvtimeout      50000

frontend http-in
    bind 1:80

    acl host_apache hdr(host) -i example.com
    acl host_monitor hdr(host) -i monitor.example.com
    acl host_cloud hdr(host) -i cloud.example.com

    use_backend apache if host_apache
    use_backend monitor if host_monitor
    use_backend cloud if host_cloud


backend apache
    server web3 127.0.0.1:81

backend monitor
    server monitor 1.1.1.1:80/monitor

backend cloud
    server cloud 2.2.2.2:80

Если у кого-то есть какие-либо другие предложения или другая программа, которую я мог бы использовать для достижения своей цели, я открыт для предложений. Я не использую haproxy по какой-то конкретной причине. Я тоже пробовал фунт, но не смог его настроить.

Спасибо за прочтение!

Brigzzy

1 ответ1

0

Хотя я люблю HAProxy, я бы согласился с Давидго, что это, вероятно, не лучший инструмент для этой работы. Я также думаю, что Apache с несколькими именованными vhosts и mod_rewrite для запросов прокси к необходимому бэкэнду - это путь.

Listen 80
NameVirtualHost *:80

<VirtualHost *:80>
  ServerName example.com
  RewriteEngine on
  ProxyPreserveHost On
  RewriteRule ^/(.*)$ http://127.0.0.1:81/$1 [P]
</VirtualHost>

<VirtualHost *:80>
  ServerName monitor.example.com
  RewriteEngine on
  ProxyPreserveHost On
  RewriteRule ^/(.*)$ http://1.1.1.1:80/monitor/$1 [P]
</VirtualHost>

В зависимости от ваших приложений на бэкэнде, переписывание может работать, а может и не работать так, как вы ожидаете. Например, если nagios ожидает, что его ресурсы находятся в корневом каталоге /monitor, и он ссылается на такие вещи, как /monitor /someurl, то ваше переписывание приведет к тому, что URL окажется в /monitor /monitor /someurl раз он попадает на ваш сервер. Вероятно, это может быть преодолено другим RewriteRule или небольшим регулярным выражением в текущем.

Вы также можете просто использовать прямой mod_proxy с директивами ProxyPass вместо mod_rewrite (который в данном случае также использует mod_proxy)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .