我的计算机上运行着多个node.js
应用程序,由于访问它们的唯一区别就是端口号,所以事情变得相当混乱。
所以我有了使用零配置来宣传它们。现在我可以在支持零配置的浏览器 (Safari) 中看到我的不同应用程序。
这是一个很好的开始,但我的团队中并不是每个人都可以使用 Safari,因此我希望他们无需端口号即可访问。
因此,我正在寻找一种基于 zeroconf 服务创建重定向或 VirtualHost 配置的方法。例如:如果我fileserver
在机器上有一个名为 zeroconf 的服务some-server.local:3377
,我希望可以通过 访问它http://fileserver.services.local
,而无需端口号。
理想情况下,它不会重定向到http://some-server.local:3377
,这就是我考虑VirtualHosts的原因。
这可行吗?
答案1
我对 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 分钟更新一次该文本文件。
编写程序将主机名映射到主机名:端口留给读者作为练习......