Bonjour 是一项很棒的技术。我希望我的 Mac(Snow Leopard)上的所有自定义虚拟主机都通过 Bonjour 进行广播。最好的方法是什么,而不必为每个虚拟主机单独启用?
答案1
我假设您正在使用内置的 Apache 服务器,所以......
如果你打开,httpd.conf
通常可以在最底部看到:
Include /private/etc/apache2/other/*.conf
“其他”目录包含 php.conf 和 bonjour.conf
不过 Bonjour.conf 有一些奇怪之处,首先,默认文件不包含一些可能的选项。据我所知,只有三个可能的选项:
RegisterDefaultSite
这将广播主站点,而不是 VHost,并使用机器的名称(共享首选项中的“计算机名称”定义)作为 Bojour 服务标题。
RegisterUserSite
这需要以下三个选项之一:
<a username>
all-users
customized_users
前两个是不言自明的,但customized_users
相当聪明;它检查每个用户是否对 index.html 进行了更改~/Sites
;如果是,则广播该用户的页面。
RegisterResource
这可能就是您正在寻找的;它接受两个参数,一个服务名称和一个路径。
前任:
RegisterResource HelloLan /
我的建议:
我会尝试在每个 VHost 中放置一个 RegisterResource,尽管我不使用 VHost,所以我自己没有尝试过。
我听说mod_bonjour
默认发货的多个RegisterResource
选项存在一些问题,请参见此处:http://deeperdesign.wordpress.com/2010/06/13/apples-mod_bonjour-is-broken-in-snow-leopard-so-i-fixed-it/。
有人在上述页面上发表评论,似乎暗示 VHost Bonjour 是可行的。
祝你好运!
答案2
只是为了澄清一下,您想为您的机器注册备用 A/CNAME 记录(例如:devsite1.local、devsite2.local 等),以便其他机器可以访问您创建的虚拟主机?没有简单的方法可以做到这一点,因为 Bonjour API(与 Avahi 不同)不允许注册任意记录名称。
答案3
在 Debian 上我做了:
a2enmod mod-dnssd
cat /etc/apache2/mods-enabled/mod-dnssd.conf
# This is the config file for mod_dnssd.<br>
< IfModule mod_dnssd.c><br>
DNSSDEnable On<br>
< /IfModule>
这同时适用于所有虚拟主机。