2011-03-23 43 views
0

我想是這樣的:如何重定向到一個默認的主機名

「http://www.anyhostname.com」 ==> 「http://192.168.0.1」

即我想將除「192.168.0.1」以外的任何請求重定向到「http://192.168.0.1」

我使用Lighttpd作爲我的網絡服務器,dnsmasq作爲我的DNS服務器。

回答

0

好的,我解決了這個問題。在這裏發佈解決方案,希望它可以幫助未來的人...

我通過修改lighttpd.conf文件解決了這個問題。我說我lighttpd.conf文件中的以下內容:

$HTTP["host"] !~ "mydesiredhostname\.com" { 
     url.redirect = (
           "" => "http://192.168.0.1/" 
         ) 
} 

謝謝大家對你的時間。乾杯!

0

我不知道你是否在做transparent proxying - 如果是的話,可能會有更好的機制來完成你想做的事情,而不是從字面上做你所概述的目標。

但是,如果你想繼續走這條路,我認爲你可以使用的lighttpd的mod_evhost來輕鬆使用默認的站點配置:

普通的例子:

server.document-root = "/home/user/sites/default/site" 
evhost.path-pattern = "/home/user/sites/%0/site/" 

如果請求example.org ,並且 /home/user/sites/example.org/site/是 找到,那個路徑就變成了docroot。

如果請求example.net但沒有 目錄中名爲 /home/user/sites/example.net/site/ 存在,那麼文檔根仍然 /home/user/sites/default/site

如果您有要處理具體的主機名,你可以將它們添加到/etc/hosts和你dnsmasq將爲他們服務。如果你有幾百個你想要處理的主機/域名,這可以工作,但如果你想處理,那麼dnsmasq可能不是正確的工具。

我知道PowerDNS's PipeBackend可以用來輕鬆地給出相同的答案,無論DNS問題;這樣,您可以輕鬆攔截請求並專門處理請求。這樣,你可以回答192.168.0.1請求,一些請求,或任何你可以編程。

+0

你知道如何用lighttpd或dnsmasq特別實現這個功能嗎? – 2011-03-23 10:07:25

+0

Lighttpd看起來好像可以,查看'mod_evhost'的文檔以獲取詳細信息;我複製的小「通用示例」表明,它可以在大致兩行配置中完成。我不認爲dnsmasq可以完成你對_all_域的所有操作,但通過'/ etc/hosts'處理幾百個應該很簡單。 – sarnold 2011-03-23 10:10:27

+0

我沒有多個網站在我的網絡服務器上運行......我只是想確保對於除我的主機名以外的任何該死的請求,該請求默認被重定向到「http://192.168.0.1」...可以這個成就了嗎? – 2011-03-23 10:49:35