У меня есть два веб-приложения rails, я настроил одно веб-приложение для ответа на несколько доменов. Я сделал это, сделав соответствующий серверный блок в nginx как дефолт.
Теперь я хочу сделать даже запросы других веб-приложений для нескольких пользовательских доменов, Есть ли способ сделать это на машине с одним IP-адресом? (Я знаю, что могу добавить дополнительный IP-адрес и заставить другое веб-приложение прослушивать его, но мой сервер находится на EC2, поэтому я не могу добавить больше IP-адресов.)
Оба эти веб-приложения знают, на какие домены они должны отвечать, и существует множество доменов. Кроме того, изменятся домены, на которые эти веб-приложения должны отвечать. Поэтому я не могу жестко закодировать их в конфигурации nginx. На моем сервере установлена Ubuntu 10.04.
Я немного исследовал это и думаю, что HAProxy может выполнять такую маршрутизацию. Могут ли списки управления доступом HAProxy получить доступ к чему-то вроде redis, чтобы найти место назначения HTTP-запроса?
Я не знаю о такой конкретной функциональности haproxy, однако haproxy позволяет:
acl host_list_a hdr_beg(host) -f /etc/haproxy/hostsA
haproxy -f haproxy.cfg -p /var/run/haproxy-private.pid -sf $(</var/run/haproxy-private.pid)
.Следовательно, вы, вероятно, можете настроить /etc/haproxy/hostA
в виде списка имен хостов. Когда вы добавляете имя хоста, запустите команду, которая воссоздает этот файл (или что-то в этом роде, возможно, файл связан со структурой данных), а затем перезагрузит haproxy.
При этом это кажется немного взломанным, часто автоматическая перезагрузка балансировщика нагрузки немного подвержена ошибкам - поэтому стоит выяснить, действительно ли это то, что вам нужно делать. Если это так, и вы делаете что-то подобное, вы должны обязательно запрограммировать много проверок ошибок и самовосстановления.