2011-03-23 54 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

相关问题