淡淡回忆 发表于 2016-12-31 09:54:34

Apache虚拟主机的设置

  很多Web服务器都支持设置虚拟主机,允许在一台服务器里放置运行多个Web站点。多个Web站点可以根据IP,域名或者端口区分。这里记录Windows下基于端口的虚拟主机的配置方法。
  Apache的安装路径为:D:\Program Files\Apache Software Foundation\Apache2.2
  在Apache的安装路径下的conf目录下找到httpd.conf,修改:

Listen 80
Listen 8082
#8082 port is added as a virtul host by myself
   同时引入在extra目录下的virtualhost的配置文件:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
   好了,接着编辑这个httpd-vhosts.conf文件,其实里面已经默认给出了虚拟主机的设置方法,自己添加如下:

<VirtualHost *:8082>
DocumentRoot "D:\apache_virtualhost\public"
ServerName www.test.com
ErrorLog "logs/my_virtualhost_error.log"
CustomLog "logs/my_virtualhost_access.log" common
<Directory D:\apache_virtualhost\public>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
  可以看到,设置的新的虚拟主机的站点根目录为D:\apache_virtualhost\public,我们知道,Apache默认的主站点的站点根目录为D:\Program Files\Apache Software Foundation\Apache2.2\htdocs,这也就是增加虚拟主机的意义和作用。同时可以新建两个my_virtualhost_error.log和my_virtualhost_access.log文件放在Apache安装路径下的Log路径下,用来记录虚拟主机站点的日志输出。<Directory>的定义方法参考httpd.conf文件里的设置方法,如果没有设置的话将默认出现403 Forbidden拒绝访问的错误。
        好了,重启Apache服务器,访问http://127.0.0.1:8082 就是访问到虚拟主机站点了。
  基于域名的虚拟主机设置(Linux下):

NameVirtualHost *:80
<VirtualHost *:80>
ServerName *
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www_lixuebbs/html
ServerName lixuebbs.jupiter.cloudlut.net
ErrorLog logs/lixuebbs_error.log
CustomLog logs/lixuebbs_access.log common
<Directory /var/www_lixuebbs/html>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
  NameVirtualHost addr[:port] 这个指令是必须的,如果不加的没有效果,所有的请求都只能指向一个。而且这儿的*:80必须和下面的VirtualHost中的一样。我这儿是新加一个虚拟主机,本身的站点还要,刚开始没加
  <VirtualHost *:80>
        ServerName *
        DocumentRoot /var/www/html
</VirtualHost>
  结果所有的请求都指向第二个虚拟主机的目录了,加上这个就好了。
       基于IP的设置方法就赘述了。
页: [1]
查看完整版本: Apache虚拟主机的设置