
Bonjour 是一項可愛的技術。我希望我的 mac (Snow Leopard) 上的所有自訂虛擬主機都透過 bonjour 進行廣播。無需單獨啟用每個虛擬主機,執行此操作的最佳方法是什麼?
答案1
我將假設您正在使用內建的 Apache 伺服器,所以...
如果您打開httpd.conf
通常可以在最底部看到:
Include /private/etc/apache2/other/*.conf
「other」目錄包含 php.conf 和 bonjour.conf
Bonjour.conf 有一些奇怪之處,其中之一是預設檔案不包含一些可能的選項。據我所知,只有三種可能的選擇:
RegisterDefaultSite
這會廣播主站點,而不是 VHost,並使用電腦名稱(由共用首選項中的「電腦名稱」定義)作為 Bojour 服務標題。
RegisterUserSite
這需要三個選項之一:
<a username>
all-users
customized_users
前兩個是不言自明的,但customized_users
相當聰明;它檢查每個使用者是否對~/Sites
;中的 index.html 進行了更改如果是,則廣播該使用者的頁面。
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>
這同時適用於所有虛擬主機。