以lampp环境为例子,其余环境只是配置文件的路径不一样。web
先要在 lampp/etc/httpd.conf ( 这个是Apache 总的配置文件)中,将虚拟路径的注释去掉。服务器
#Include etc/extra/httpd-vhosts.conf域名
使httpd-vhosts.conf文件起做用,或者直接在httpd.conf中写配置也能够,但不建议这么作。配置
相关的配置有:Listen NameVirtualHost <VirtualHost>List
1. Listen 要监听的端口,多个端口,要写多个Listen;不然Apache启动的时候,不会启动相应的套接字。权限
好比 请求
Listen 80lamp
Listen 8080配置文件
2.NameVirtualHost 若是没有这个,<VirtualHost>标签就没什么做用。hosts
(感谢okiwill的指正,这里特指基于域名访问的状况,如果基于IP访问的,以第一个指定IP的VirtualHost为准,每一个IP能够单独指定)
一个NameVirtualHost 能够对用多个<VirtualHost>,每一个<VirtualHost>必须有本身的NameVirtualHost(我猜的)
NameVirutalHost *:80
制定这个主机的IP和端口,若是服务器上有多个IP,就能够制定某个IP的某个端口是哪一个 主机。
(新版的Apache已经去除了NameVirtualHost 这个配置,由于确实没什么用,参数在VirtualHost中都已经指明了)
3 最关键的VirtualHost
重要:Apache 在接受到请求时,首先会默认第一个VirtualHost,而后再找匹配的,若是没有匹配的,就是第一个VirtualHost起做用。
所以在httpd.conf中,将<Dicrectory />(这个是全部目录的默认配置)
和 <Direcotry /opt/lampp/htdocs>的权限,都是deny from all.做为默认。
因此,个人第一个VirtualHost是
<VirtualHost *:80>
ServerName *
DocumentRoot </opt/lampp/htdocs/guest>
<Directory /opt/lampp/htdocs/guest>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>
后面的,依次添加就能够
<VirtualHost *:80>
ServerName www.myweb1.com
DocumentRoot </opt/lampp/htdocs/myweb1>
<Directory /opt/lampp/htdocs/myweb1>
Order deny,allow
Allow from all
</Direcotry>
<VirtualHost/>