在 OS X 上的 Apache 上为自定义虚拟主机配置 Bonjour

在 OS X 上的 Apache 上为自定义虚拟主机配置 Bonjour

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>

这同时适用于所有虚拟主机。

相关内容