如何通过 apache VirtualHost 来设置多个虚拟主机
本机调试php,开发的方法:
httpd.conf 需要添加监听端口:
Listen 10080
Listen 10085
然后添加
NameVirtualHost 127.0.0.1:10080 <VirtualHost 127.0.0.1:10080> DocumentRoot "F:/projects/php/wb" ServerName 127.0.0.1:10080 </VirtualHost> NameVirtualHost 127.0.0.1:10085 <VirtualHost 127.0.0.1:10085> DocumentRoot "F:/projects/php/wb/abc/public_html" ServerName 127.0.0.1:10085 </VirtualHost> <Directory "F:/projects/php/wb/abc/public_html"> AddHandler fcgid-script .php FcgidWrapper "D:/server/php-5.3.3-nts/php-cgi.exe" .php Options execCGI AllowOverride None Order allow,deny Allow from all </Directory> <Directory "F:/projects/php/wb"> AddHandler fcgid-script .php FcgidWrapper "D:/server/php-5.3.3-nts/php-cgi.exe" .php Options execCGI AllowOverride None Order allow,deny Allow from all </Directory>
可以看到,针对每个端口都配置了NameVirtualHost ,
对每个端口配置了VirtualHost ,针对每个目录配置了脚本解析引擎。而且10085配置的目录是在10080配置的目录之下,这也是可以的!
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
这样的配置对两个端口都有效。
下面的转自 http://hi.baidu.com/fc_lamp/blog/item/c6905b1134d3f91b213f2ec4.html
如何通过 apache VirtualHost 来设置多个虚拟主机(在本地 通过 apache VirtualHost 来设置虚拟主机)
(多个域名指向同一个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了