apache 中多虚拟主机VirtualHost的配置
先提一下,在httpd.conf里你肯定配置了一个网站所在的根目录,也就是htdocs,这是个默认的路径,
而虚拟主机的路径是咱们现在要改的,虚拟主机的优先级大于默认的,所以对同一个端口访问时是先找虚拟主机的
没有的话再去找默认的。
而虚拟主机的路径是咱们现在要改的,虚拟主机的优先级大于默认的,所以对同一个端口访问时是先找虚拟主机的
没有的话再去找默认的。
首先要在httpd.conf中把include httpd-vhosts.conf前的#去掉
然后改httpd-vhosts.conf,在extra目录里,
--------------------------单IP绑定多域名---------------------------------------------------
NameVirtualHost 本机ip:80 //它表示所有来访本机的80端口,其实把整个这句去掉也能用,不过最后解析得到的
//只是第一个虚拟主机,其它的就永远都访问不了
//只是第一个虚拟主机,其它的就永远都访问不了
<VirtualHost www.cqy.cn:80> //以下的属性只有DocumentRoot有用,
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/discuz" //你网站目录
ServerName www.cqy.cn
ServerAlias www.cqy.cn fpt.cqy.cn //ServerAlias是ServerName的别名,但不要认为你可以随便写,
//只有你在DNS服务器上配制了别名你也可以用,当然serverName你也要在
//服务器上配制相应的名子(其实正如上说除了DocumentRoot,其它都没用)
ErrorLog "logs/dummy-host.hfut.edu.cn-error.log" //日志地址
CustomLog "logs/dummy-host.hfut.edu.cn-access.log" common //日志地址
</VirtualHost>
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/discuz" //你网站目录
ServerName www.cqy.cn
ServerAlias www.cqy.cn fpt.cqy.cn //ServerAlias是ServerName的别名,但不要认为你可以随便写,
//只有你在DNS服务器上配制了别名你也可以用,当然serverName你也要在
//服务器上配制相应的名子(其实正如上说除了DocumentRoot,其它都没用)
ErrorLog "logs/dummy-host.hfut.edu.cn-error.log" //日志地址
CustomLog "logs/dummy-host.hfut.edu.cn-access.log" common //日志地址
</VirtualHost>
<VirtualHost www.cqy.jp:80> //第二台虚拟主机 和第一台虚拟主机同理配制
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/phpwind"
ServerName www.cqy.jp
ErrorLog "logs/dummy-host2.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host2.hfut.edu.cn-access.log" common
</VirtualHost>
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/phpwind"
ServerName www.cqy.jp
ErrorLog "logs/dummy-host2.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host2.hfut.edu.cn-access.log" common
</VirtualHost>
--------------------------单IP绑定多端口------------------------------------
再提一下,不要进行多端口多域名配置,同一IP对多端口绑定的优先级大于对于多域名的绑定,因为解析时先将域名进行解析,由于不同域名对应相同IP,所以变成了如127.0.0.1:8000形式的ip加端口号,所以起作用的只有端口号,所以如果多端口
又多域名,它只会解析多端口。
又多域名,它只会解析多端口。
先在httpd.conf里
找到
listen 80
下面加上要俗侦听的端口
listen 8009
同样把include httpd-vhosts.conf前的#去掉
然后改httpd-vhosts.conf,在extra目录里,
然后改httpd-vhosts.conf,在extra目录里,
NameVirtualHost *:80 //对于单ip多端口,有没有都行
<VirtualHost *:80> //常规的,不必多说,和上面讲的一样
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/discuz"
ServerName www.cqy.cn
ServerAlias www.cqy.cn fpt.cqy.cn
ErrorLog "logs/dummy-host.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host.hfut.edu.cn-access.log" common
</VirtualHost>
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/discuz"
ServerName www.cqy.cn
ServerAlias www.cqy.cn fpt.cqy.cn
ErrorLog "logs/dummy-host.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host.hfut.edu.cn-access.log" common
</VirtualHost>
<VirtualHost *:8009> //这个设置端口是最重要的,还有下面的DocumentRoot也是最重要的,其它的可以随便写,
//像我这样也行
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/phpwind"
ServerName www.cqffffy.jp
ServerAlias www.cfffffqy.jp
ErrorLog "logs/dummy-host2.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host2.hfut.edu.cn-access.log" common
</VirtualHost>
//像我这样也行
ServerAdmin webmaster@dummy-host.hfut.edu.cn
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/phpwind"
ServerName www.cqffffy.jp
ServerAlias www.cfffffqy.jp
ErrorLog "logs/dummy-host2.hfut.edu.cn-error.log"
CustomLog "logs/dummy-host2.hfut.edu.cn-access.log" common
</VirtualHost>
重启就行了
总结一下,我感觉只有<VirtualHost >标签和DocumentRoot 有用,当一个ip对应多个域名时用<VirtualHost 域名:端口>
当一个ip对多个端口时可以用<VirtualHost *:端口 >,若是80端口可省
以上是我反复试的总结,如有不对讲留言告诉我,谢谢