apache多站点配置
最佳回答
很多人常常看到一台服务器上跑多个站点,不同的域名访问不同的站点,就会有个疑惑:访问的时候并没有在地址栏中加入端口号,多个域名都是解析到这个服务器的IP地址,服务器怎么能够正确的分辨和解析呢?
其实还是对http协议不够了解,看下图一切一目了然
对应的在apache中有rewite和proxy模块,它们就是为了完成这些任务, 一台服务上我们配置多个 vhost,必然需要端口号,
比如:
a.com :80
b.com :8080
实际访问的时候 www.a.com 自动转发到80端口, www.b.com 则自动转发到8080端口。
网站 1:
网站 2:
这样一个服务器的 80 端口上就跑起两个站点.
没事找了个虚拟主机来试用,尝试用给的IP地址访问怎么都访问不了,一直都显示
后来仔细一想,虚拟主机是需要依赖域名的,不然没办法区分vhost,后来找到测试的域名果然可以正常访问了。
最新回答共有2条回答
-
夜半唱歌
回复最简单高效的方法如下:
1. 先打开Apache的配置文件httpd.conf,在这个文件,
找到这句:“#Include etc/extra/httpd-vhosts.conf”
(根据安装路径不同,上面的路径会略有不同)
把前面的#曲调,即开启了使用虚拟主机的功能;
2. 在httpd-vhosts.conf中进行虚拟主机的配置操作;也可以在httpd.conf直接写入配置,但是
不建议这么做;
3. 打开httpd-vhosts.conf文件,找到NameVirutalHost *:80,这句话的含义是制定这个主机的
IP地址和端口号;
4. 关键的virtualhost配置,在NameVirutalHost *:80的下面;
注意事项:Apache在接受请求时,首先会默认第一个VirtualHost,然后再匹配其他虚拟主
机,如果没有匹配的,就是第一个VirtualHost起作用。故,在httpd.conf中,将
<Dicrectory />(这个是所有目录的默认配置)和<Direcotry/opt/lampp/htdocs>的权限,
都默认设置为deny from all。
5. virtualhost配置实例:
<VirtualHost*:80>
ServerName *
DocumentRoot </opt/lampp/htdocs/guest>
<Directory /opt/lampp/htdocs/guest>
Order deny,allow
Allow from all
</Dire