免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4156 | 回复: 15
打印 上一主题 下一主题

httpd-2.2.10怎么做虚拟主机? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-09 13:50 |只看该作者 |倒序浏览
我下了个httpd-2.2.10源码包安装,安装完后不怎么来做虚拟主机。???

论坛徽章:
1
寅虎
日期:2015-01-23 02:35:47
2 [报告]
发表于 2008-12-09 13:54 |只看该作者
看apache文档,就是几个参数配置问题

论坛徽章:
0
3 [报告]
发表于 2008-12-09 13:54 |只看该作者
这个教程遍地都是 ,搜搜

论坛徽章:
0
4 [报告]
发表于 2008-12-09 13:59 |只看该作者
遇到问题多搜索一下,基本上都能找到答案

论坛徽章:
0
5 [报告]
发表于 2008-12-09 14:24 |只看该作者
文章来自于网上,感谢不知姓名的前辈!

本文档说明了如何使用基于域名的虚拟主机。

基于域名的虚拟主机和基于IP的虚拟主机比较
基于IP的虚拟主机使用连接的IP地址来决定相应的虚拟主机。这样,你就需要为每个虚拟主机分配一个独立的IP地址。而基于域名的虚拟主机是根据客户端提交的HTTP头中标识主机名的部分决定的。使用这种技术,很多虚拟主机可以共享同一个IP地址。
基 于域名的虚拟主机相对比较简单,因为你只需要配置你的DNS服务器将每个主机名映射到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解IP地址不足的问题。所以,如果没有特殊原因使你必须使用基于IP的虚拟主 机,您最好还是使用基于域名的虚拟主机。下列情况下,你可能会想要使用基于IP的虚拟主机:
一些 古董级的客户端与基于域名的虚拟主机不兼容。为了与基于域名的虚拟主机兼容,客户端必须发送"Host"头。HTTP/1.1规范中对此做了要求。而所有 现在常见的仅支持HTTP/1.0的旧版本浏览器都以附加的方式实现了这个要求。如果你又想支持这些老浏览器,又想使用基于域名的虚拟主机。我们提供了一 个技术方案,你可以在本文末尾看到它。
SSL协议先天特性决定了基于域名的虚拟主机无法成为SSL安全服务器。
一些操作系统和网络设备实现的带宽管理技术无法在多个主机共享一个IP的情况下区别它们。

使用基于域名的虚拟主机
相关模块
相关指令
core
DocumentRoot
NameVirtualHost
ServerAlias
ServerName
ServerPath
<VirtualHost>
为了使用基于域名的虚拟主机,你必须指定服务器IP地址(和可能的端口)来使主机接受请求,这个可以用NameVirtualHost指令来进行配置。如果服务器上所有的IP地址都会用到,你可以用"*"作为NameVirtualHost的参数。如果你打算使用多端口(如运行SSL)你必须在参数中指定一个端口号,比如"*:80"。请注意,在NameVirtualHost指令中指定IP地址并不会使服务器自动侦听那个IP地址。请参阅设置Apache使用的地址和端口一章获取更多详情。另外,这里设定的IP地址必须对应服务器上的一个网络接口。
下一步就是为每个虚拟主机建立<VirtualHost>段。<VirtualHost>的参数与NameVirtualHost的参数必须是一样的(比如说,一个IP地址或"*"代表的所有地址)。在每个<VirtualHost>段中,至少要有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容位于文件系统的什么地方。
取消中心主机(Mainhost)
如果你想在现有的web服务器上增加虚拟主机,你必须也为现存的主机建造一个<VirtualHost>定义块。这个虚拟主机中ServerName和DocumentRoot所包含的内容应该与全局的ServerName和DocumentRoot保持一致。还要把这个虚拟主机放在配置文件的最前面,来让它扮演默认主机的角色。
比如说,假设你正在为域名www.domain.tld提供服务,而你又想在同一个IP地址上增加一个名叫www.otherdomain.tld的虚拟主机,你只需在httpd.conf中加入以下内容:
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>

<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
当然,你可以用一个固定的IP地址来代替NameVirtualHost和<VirtualHost>指令中的"*"号,以达到一些特定的目的。比如说,你可能会希望在一个IP地址上运行一个基于域名的虚拟主机,而在另外一个IP地址上运行一个基于IP的或是另外一套基于域名的虚拟主机。
很多服务器希望自己能通过不只一个域名被访问。我们可以把ServerAlias指令放入<VirtualHost>小节中来解决这个问题。比如说在上面的第一个<VirtualHost>配置段中ServerAlias指令中列出的名字就是用户可以用来访问同一个web站点的其它名字:
ServerAlias domain.tld *.domain.tld
这样,所有对域domain.tld的访问请求都将由虚拟主机www.domain.tld处理。通配符标记"*"和"?"可以用于域名的匹配。当然你不能仅仅搞个名字然后把它放到ServerName或ServerAlias里就算完了。你必须先在你的DNS服务器上进行配置,将这些名字和您服务器上的一个IP地址建立映射关系。
最后,你可以把其他一些指令放入<VirtualHost>段中,以更好的配置一个虚拟主机。大部分指令都可以放入这些<VirtualHost>段中以改变相应虚拟主机配置。如果您想了解一个特定的指令是否可以这样运用,请参见指令的作用域。主服务器(main server)范围内的配置指令(在所有<VirtualHost>配置段之外的指令)仅在它们没有被虚拟主机的配置覆盖时才起作用。
这样,当一个请求到达的时候,服务器会首先检查它是否使用了一个能和NameVirtualHost相匹配的IP地址。如果能够匹配,它就会查找每个与这个IP地址相对应的<VirtualHost>段,并尝试找出一个与请求的主机名相同的ServerName或ServerAlias配置项。如果找到了,它就会使用这个服务器。否则,将使用符合这个IP地址的第一个列出的虚拟主机。
综上所述,第一个列出的虚拟主机充当了默认虚拟主机的角色。当一个IP地址与NameVirtualHost指令中的配置相符的时候,主服务器中的DocumentRoot将永远不会被用到。所以,如果你想创建一段特殊的配置用于处理不对应任何一个虚拟主机的请求的话,你只要简单的把这段配置放到<VirtualHost>段中,并把它放到配置文件的最前面就可以了。

与旧版浏览器的兼容性
前面提过,有些浏览器无法对基于域名的虚拟主机发送必要的数据,从而使其无法正常工作。这些浏览器将会收到由配置中符合那个IP地址的第一个列出的虚拟主机发出的页面(基于域名的主虚拟主机)。
究竟什么算旧?
请注意,当我们说到旧的时候,我们并不是真的说它们很古老。其实现实中您未必就能用上这些浏览器。现在几乎所有的浏览器都会发送基于域名的虚拟主机所必须的Host头了。
虽然有点麻烦。但您还是有可能会用到ServerPath指令,以下是一个配置实例:
NameVirtualHost 111.22.33.44

<VirtualHost 111.22.33.44>
ServerName www.domain.tld
ServerPath /domain
DocumentRoot /web/domain
</VirtualHost>
以上这些说明了什么呢?它说明一个具有"/domain"开头的任何URI都会为www.domain.tld这个虚拟主机所伺服。这意味着这个页面可以由http://www.domain.tld/domain/的形式为所有的浏览器所访问。能够发送"Host:"头的浏览器也能使用http://www.domain.tld/这种形式来访问它。
为了达到这样的目的。您先要在您的主虚拟主机的页面上放一个到http://www.domain.tld/domain/的链接。然后,确保在虚拟主机的页面中使用的全是相对链接(诸如:"file.html"或"../icons/image.gif"或者是包含/domain/这个前缀(比如:"http://www.domain.tld/domain/misc/file.html"或"/domain/misc/file.html"
完成这些可能需要一些尝试,但遵照上述指导将会确保你的页面能够为所有的浏览器所正确显示,不论新旧。

论坛徽章:
0
6 [报告]
发表于 2008-12-09 14:35 |只看该作者
CU 中的 man 有介紹

论坛徽章:
0
7 [报告]
发表于 2008-12-09 14:38 |只看该作者
先谢谢各位的解答了,在这之前我也做过。我的配置是
NameVirtualHost *:80

        <VirtualHost *:80>
                ServerAdmin www.test.com
                DocumentRoot /var/www/test
        </VirtualHost>

        <VirtualHost *:80>
                ServerAdmin www.test2.com
                DocumentRoot /var/www/test2
        </VirtualHost>

但做出来后,访问www.test2.com的页面也是www.test.com的页面。我没有做dns就是有测试机上改了下hosts表。

论坛徽章:
0
8 [报告]
发表于 2008-12-09 14:52 |只看该作者
自己顶一下!!

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
9 [报告]
发表于 2008-12-09 14:57 |只看该作者
VirtualHost ip(或域名):端口
ServerName
DocumentRoot 设定好,保证目录文件 nobody 可读就是了。

论坛徽章:
0
10 [报告]
发表于 2008-12-09 15:05 |只看该作者
神来了……我将
     <VirtualHost 192.168.0.241:80>
                ServerAdmin www.test2.com
                DocumentRoot /var/www/test2/
        </VirtualHost>
放到
    <VirtualHost 192.168.0.241:80>
                ServerAdmin www.test.com
                DocumentRoot /var/www/test/
        </VirtualHost>
前面,www.test2.com 就能访问到了。但www.test.com访问也是test2.com的页面!
现在就是不能各就各位。

各位大侠能给我个解释吗??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP