配置一台服务器的时候,如果只运行一个站点,往往过于浪费资源,那么同一个主机放置多个站点(基于主机名的虚拟主机,即共享IP的虚拟空间)是个非常不错的方法。Apache HTTP服务器通过修改Apache的配置文件httpd.conf来实现多个站点同时运行。配置虚拟主机的方式主要有两种,一种是多个不同端口对应的多个虚拟主机站点,一种是同一端口对应多个不同域名的虚拟主机站点。这里以80端口为例,在Apache配置多个不同域名虚拟主机。
Apache HTTP服务器配置多个域名(虚拟主机)绑定的操作步骤
1、修改Apache配置文件:打开Apache的安装目录,找到 conf\httpd.conf 文件(如:D:\AMP\Apache24\conf\httpd.conf)。找到下面三处地方进行修改:
#LoadModule vhost_alias_module modules/mod_vhost_alias.so,去掉最前面的“#”来启用apache的虚拟主机功能。 将DocumentRoot和Directory的路径,修改为站点目录的上一级目录。例如站点放在D:/wwwroot/www1,则改为以下形式: DocumentRoot "D:/wwwroot" <Directory "D:/wwwroot"> #Include conf/extra/httpd-vhosts.conf,去掉前面的“#”。意思是从httpd-vhosts.conf这个文件导入虚拟主机配置
2、添加虚拟主机:找到 conf/extra/httpd-vhosts.conf 文件(如:D:\AMP\Apache24\conf\extra\httpd-vhosts.conf),修改虚拟目录配置,在文件的末尾处添加如下信息。(注:顺序绝不可以乱,127.0.0.1这组必须为第一组,否则会出现localhost不能访问的问题)
//添加虚拟主机 <VirtualHost *:80> DocumentRoot "D:/wwwroot/htdocs" ServerName 127.0.0.1 </VirtualHost> <VirtualHost *:80> DocumentRoot "D:/wwwroot/test" //站点文件的路径 ServerName test.com //站点绑定的域名 ErrorLog "logs/test.com-error.log" CustomLog "logs/test.com-access.log" common </VirtualHost>
PS:设置格式的注意事项,需要说明的是一般除了设置serverName和DocumentRoot外,还需要对目录进行设置,即<Directory></Directory>的东西(可以写在虚拟空间配置还可写在配置文件httpd.conf中)。否则会出现无权限访问之类的问题,其他参数诸如错误日志、用户访问信息、别名设置等可以设置也可以省略。
<VirtualHost *:80> ServerName www.myweb1.com DocumentRoot "D:/wwwroot" <Directory "D:/wwwroot"> Order deny,allow Allow from all </Direcotry> </VirtualHost>
3、修改完配置文件后,记得一定要重启apache,否则修改是不会起到作用的。
出现 HTTP 错误 403 Forbidden — 禁止访问解决办法
错误提示:HTTP 错误 403 - 禁止访问,即403 Forbidden:You don't have permission to access / on this server.
解决方法:打开apache的配置文件httpd.conf(如:D:\AMP\Apache24\conf\httpd.conf),逐行检查。找到:
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all //此处“Deny from all”为拒绝一切连接。把此行修改为“Allow from all”,即可解决问题。 </Directory>