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

Создание VirtualHosts для HTTP-сервисов zeroconf

У меня несколько node.js приложения, работающие на моем компьютере, и все становится довольно запутанным, поскольку единственная разница между доступом к ним - это номер порта.

Итак, у меня возникла идея использовать Zeroconf рекламировать их. Теперь я могу видеть свои различные приложения в браузерах с поддержкой zeroconf (Safari).

Это отличное начало, но не все в моей команде могут использовать Safari, поэтому я бы хотел, чтобы они были доступны без номера порта.

Итак, я ищу способ создать перенаправления или конфигурации VirtualHost на основе сервисов zeroconf. Например: если у меня есть служба zeroconf под названием fileserver на машине some-server.local:3377, Я бы хотел, чтобы он был доступен через http://fileserver.services.local, без номера порта.

В идеале это не перенаправляет на http://some-server.local:3377, вот почему я подумал о VirtualHosts.

Возможно ли это?

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

Первый - использовать mod_rewrite и RewriteMap. В RewriteMap будет программой, которая ищет правильную запись и возвращает информацию. Вот пример:

RewriteEngine On
RewriteMap zeroconf:/path/to/program
RewriteRule ^/(.*) http://${zeroconf:$HTTP_HOST}/$1 [P,L]

Программа, под которой вы работаете /path/to/program должен принимать имя хоста в качестве аргумента (например, fileserver.services.local) и верните имя сервера и порт как some-server.local:3377. Mod_rewrite затем проксирует это соединение через этот сервер и порт - если вы не хотите, чтобы оно проксировалось, удалите P из RewriteRule.

Другой способ - использовать RewriteMap который состоит из обычного текстового файла и запускает задание cron для обнаружения любых изменений в службах и обновления этого текстового файла каждые X минут.

Написание программы для сопоставления имени хоста имени хоста: порт оставлено читателю в качестве упражнения ...