Назад | Перейти на главную страницу

Настройте несколько веб-приложений для ответа на несколько доменов с одного IP-адреса

У меня есть два веб-приложения rails, я настроил одно веб-приложение для ответа на несколько доменов. Я сделал это, сделав соответствующий серверный блок в nginx как дефолт.

Теперь я хочу сделать даже запросы других веб-приложений для нескольких пользовательских доменов, Есть ли способ сделать это на машине с одним IP-адресом? (Я знаю, что могу добавить дополнительный IP-адрес и заставить другое веб-приложение прослушивать его, но мой сервер находится на EC2, поэтому я не могу добавить больше IP-адресов.)

Оба эти веб-приложения знают, на какие домены они должны отвечать, и существует множество доменов. Кроме того, изменятся домены, на которые эти веб-приложения должны отвечать. Поэтому я не могу жестко закодировать их в конфигурации nginx. На моем сервере установлена ​​Ubuntu 10.04.

Я немного исследовал это и думаю, что HAProxy может выполнять такую ​​маршрутизацию. Могут ли списки управления доступом HAProxy получить доступ к чему-то вроде redis, чтобы найти место назначения HTTP-запроса?

Я не знаю о такой конкретной функциональности haproxy, однако haproxy позволяет:

  1. Списки контроля доступа для чтения из файла: acl host_list_a hdr_beg(host) -f /etc/haproxy/hostsA
  2. Для перезагрузки конфига haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid).

Следовательно, вы, вероятно, можете настроить /etc/haproxy/hostA в виде списка имен хостов. Когда вы добавляете имя хоста, запустите команду, которая воссоздает этот файл (или что-то в этом роде, возможно, файл связан со структурой данных), а затем перезагрузит haproxy.

При этом это кажется немного взломанным, часто автоматическая перезагрузка балансировщика нагрузки немного подвержена ошибкам - поэтому стоит выяснить, действительно ли это то, что вам нужно делать. Если это так, и вы делаете что-то подобное, вы должны обязательно запрограммировать много проверок ошибок и самовосстановления.