如何通过 apache VirtualHost 来设置多个虚拟主机

如何通过 apache VirtualHost 来设置多个虚拟主机(在本地 通过 apache VirtualHost 来设置虚拟主机

转载自 fc_lamp
最终编辑 fc_lamp

(多个域名指向同一个IP)

在开始之前,我们看看这个资料:

Apache 虚拟主机说明:
虚拟主机和分为两种:
1: 基与(ip)的虚拟主机
基于IP的虚拟主机使用链接的IP地址来决定相应的虚拟主机。
你就需要为每个主机设定一个独立的IP地址。

2:基与(域名)的虚拟主机
根据客户端提交的HTTP头中的关于主机名的部分决定的。
很多虚拟主机可以享用同一个IP地址。
具体使用:
你只需要配置你的DNS服务器将每个主机名映射到正确的IP地址。
也就是添加(主机记录)。
然后配置你httpd 另其辨识不同的主机名就可以了。
基于域名的虚拟主机也可以缓解IP地址不足的问题。
基于域名的虚拟主机使用的模块。(core)
相关配置语法:
DocumentRoot
NameVirtualHost
ServerAlias
ServerName
ServerPath
VirtualHost
为了使用基于域名的虚拟主机,你必须指定服务器IP地址(和可能的端口)来使主机接受请求。
1、以用NameVirtualHost指令来进行配置。 如果服务器上所有的IP地址都会用到, 你可以用*作为NameVirtualHost的参数。
请注意,在NameVirtualHost指令中指明了IP地址并不会使服务器侦听那个IP地址。 这里设定的IP地址必须对应服务器上的一个网络接口。
2、下一步就是为你建立的每个主机设定<VirtualHost>配置块。
•VirtualHost>的参数与NameVirtualHost指令的参数是一样的 (比如说,一个IP地址,或是*代表的所有地址)。
•每个<VirtualHost>定义块中,至少都会有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容存在于文件系统的什么地方。

以此来区别不同的虚拟主机。
什么情况不能用:
SSL protocol 决定了基于域名的虚拟主机无法成为SSL安全服务器。
操作系统和网络设备实现的带宽管理技术无法在主机共享一个IP的情况下区别它们。

以上信息来至:http://bbs.51cto.com/thread-23274-1-1.html

 

看了以上资料后,我们再来实现一下:首先这里由于我们只是在本地测试,所以我们的IP与域名的映射做法与提供商的不一样。

如果你的是WIN 操作系统,可这样做:

1 首先打开HOSTS文件:(你可以在 C:\WINDOWS\system32\drivers\etc 这个目录下找到它)

进行这样编辑:

127.0.0.1          www.one.com
127.0.0.1          www.two.com

这样做的原因在于:Windows系统会先检查自己的Hosts文件中是否有这个网络域名映射关系。如果有,则调用这个IP地址映射,如果没有,再向已知的DNS服务器提出域名解析。也就是说hosts文件实际上可以看成是一个本机的DNS系统,它可以负责把域名解释成IP地址,它的优先权比DNS服务器要高。

让具体你可以参考这篇文章《域名访问提示,域名纠错系统等问题如何解决》

2 在打开apache的config文件:一般情况下你可以在apache的安装目录(conf/)里找到 httpd.conf文件进行设置,也可能是在 conf/extra/httpd-vhosts.conf 文件里

然后进行这样编辑:

#这里默认是80端口

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1>
DocumentRoot "这里是你的网站根目录"
ServerName www.one.com
</VirtualHost>
<VirtualHost 127.0.0.1>
DocumentRoot "这里是你的网站根目录"
ServerName  www.two.com
</VirtualHost>

 

然后:重启apache 就OK了


» 本文章为Java地带原创,欢迎转载!转载请注明本文地址,谢谢!
» 本文链接:https://blog.java-zone.org/archives/11.html
» 订阅本站:https://blog.java-zone.org/feed/
» 转载请注明来源:Java地带  » 《如何通过 apache VirtualHost 来设置多个虚拟主机》

标签: Apache, VirtualHost, 虚拟主机

添加新评论