使用apache来配置虚拟主机,在单一系统上运行多个网站。
现在很多linux主机使用apache作为web服务器的,大部分是基于这个原理来配置虚拟主机的。
下面就windows下以apache 2.4.3作为演示的一个教程。
这里只是简单的说明下,简述实现的原理
1.Apache的配置文件httpd.conf,找到Virtual hosts,进行如下修改保存。
# Virtual hosts#Include conf/extra/httpd-vhosts.conf去掉第2行的 # 号,改为# Virtual hostsInclude conf/extra/httpd-vhosts.conf
这样就开启了extra文件夹下的httpd-vhosts.conf,以后修改虚拟主机只要在这个文件进行。
2.对httpd-vhosts.conf进行配置。
例如域名www.a.com和www.b.com
# Virtual Hosts# Required modules: mod_log_config# If you want to maintain multiple domains/hostnames on your# machine you can setup VirtualHost containers for them. Most configurations# use only name-based virtual hosts so the server doesn't need to worry about# IP addresses. This is indicated by the asterisks in the directives below.# Please see the documentation at # URL:http://httpd.apache.org/docs/2.4/vhosts/ # for further details before you try to setup virtual hosts.# You may use the command line option '-S' to verify your virtual host# configuration.# VirtualHost example:# Almost any Apache directive may go into a VirtualHost container.# The first VirtualHost section is used for all requests that do not# match a ServerName or ServerAlias in any VirtualHost block. VirtualHost *:80 ServerAdmin webmaster@a.com DocumentRoot "d:/www/a" ServerName a.com ServerAlias www.a.com ErrorLog "logs/a.com.log" CustomLog "logs/a.com.log" common Directory "d:/www/a" Require all granted /Directory /VirtualHost VirtualHost *:80 ServerAdmin webmaster@b.com DocumentRoot "d:/www/b" ServerName b.com ServerAlias www.b.com ErrorLog "logs/b.com.log" CustomLog "logs/b.com.log" common Directory "d:/www/b" Require all granted /Directory /VirtualHost
注意:apache 2.4以上版本中需要在目录下面添加 Require all granted,否则无论怎么访问都是403。
这个我也查找了好久才查出的原因,官方文档也没有找到说明的地方。