У меня несколько 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 минут.
Написание программы для сопоставления имени хоста имени хоста: порт оставлено читателю в качестве упражнения ...