Apache配置多个网站的方法

2017年10月18日16:00:56 发表评论 54

Apache虚拟主机是一种允许在同一台机器上,运行超过一个网站的解决方案。虚拟主机有两种,一种叫基于IP的(IP-based),另一种叫基于名字的(name-based)。虚拟主机的存在,对用户来说是透明的。

基于IP的虚拟主机:

对于基于IP的虚拟主机来说,必须为每个虚拟主机配备一个单独的IP。也就是说你的服务器必须有多个IP地址。对于这种方式,我们在本地就可以做一个实验来进行配置。

配置基于IP的虚拟主机,有两种方法:一是启动多个apache伺服程序,每个实例使用单独的配置文件,一般来说,在同一台机器上,架设两个网站,这两个网站互相之间不希望对方访问自己的文件,就使用这种方式,每个apache实例都是用单独的用户名,组来启动,并且放到不同的目录下,这种方式只要在apche的配置文件中,为Listen命令配置不同的ip即可;

第二种方法是只启动一个单一的apache进程,使用VirtualHost指令来为不同的站点,配置不同的值,这种配置方式,我们可以在本地做个试验的,由于127.0.0.*的所有ip都是指向本机的,所以,我们可以随便拿两个出来做实验,按照如下方式配置apache,之后,在hosts文件中,将域名绑定到配置的ip上,就可以实现在本地运行多个网站系统的一个配置。

基于名字的虚拟主机:

基于名字的虚拟主机比起基于IP的来说,配置要更加简单,它只要依靠客户端发送的HTTP头信息中的HOST字段来判断,服务器到底要服务哪个虚拟主机。一般情况下,还是比价推荐使用这种方式。因为IP资源日渐稀缺,对于一般用户来说,为一台服务器购买多个IP也是成本较高的。

使用这种方式配置时,首先是用NameVirtualHost指令,配置次apache实例监听的IP地址和端口号,然后使用VirtualHost指令来配置不同的虚拟主机,上述的例子,用这种方式配置的话,配置方法如下(注意,在这种方式中,ServerName是必填字段)

基于IP的虚拟主机对应第一、二种,基于名字的虚拟主机对应第三种;

第一种:单IP不同端口

第二种:多IP同端口(独立IP的虚拟空间)

第三种:域名绑定根目录的方式(共享IP的虚拟空间)


第一种一般是测试环境,毕竟加了端口,如果绑定域名,访问的时候域名后面也需加端口

将同一个域名的不同端口映射到不同的虚拟主机,不同端口映射到不同的站点

例子分别通过80和8081访问不同的根目录。

大概在50几行有个Listen 80,在下面添加8081端口。

Listen 0.0.0.0:8081
Listen [::0]:8081

在httpd-vhosts.conf文件中添加如下代码:

  1. <VirtualHost www.wosn.net:80>      
  2.     #配置访问跟目录      
  3.     DocumentRoot "d:/Apache/myweb1"      
  4.     #这里配置欢迎首页面      
  5.     DirectoryIndex index.html index.htm index.php      
  6.     <Directory />      
  7.     Options FollowSymLinks      
  8.     #不允许别人修改我们的页面      
  9.     AllowOverride None      
  10.     #设置访问权限      
  11.     Order allow,deny      
  12.     Allow from All      
  13.     </Directory>      
  14. </VirtualHost>      
  15.       
  16. <VirtualHost www.wosn.net:8081>      
  17.     #配置访问跟目录      
  18.     DocumentRoot "d:/Apache/myweb2"      
  19.     #这里配置欢迎首页面      
  20.     DirectoryIndex index.html index.htm index.php      
  21.     <Directory />      
  22.     Options FollowSymLinks      
  23.     #不允许别人修改我们的页面      
  24.     AllowOverride None      
  25.     #设置访问权限      
  26.     Order allow,deny      
  27.     Allow from All      
  28.     </Directory>      
  29. </VirtualHost>     

第二种写法:

  1. <VirtualHost *:80>  
  2.     DocumentRoot "D:\wamp\www\dh"  
  3.     ServerName dh.com:80  
  4.     DirectoryIndex index.html index.htm index.php  
  5.     <Directory />  
  6.     AllowOverride None  
  7.     Order allow,deny  
  8.     Allow from All  
  9.     </Directory>  
  10. </VirtualHost>  
  11.   
  12. <VirtualHost *:8081>  
  13.     DocumentRoot "D:\wamp\www\vv"  
  14.     ServerName dh.com:8081  
  15.     DirectoryIndex index.html index.htm index.php  
  16.     <Directory />  
  17.     Options FollowSymLinks  
  18.     AllowOverride None  
  19.     Order allow,deny  
  20.     Allow from All  
  21.     </Directory>   
  22. </VirtualHost>  

第二种多IP同端口。

在httpd-vhosts.conf文件中添加如下代码:

  1. <VirtualHost 127.0.0.1:80>  
  2.     DocumentRoot "D:\wamp\www\dh"  
  3.     ServerName dh.com  
  4.     ServerAlias www.dh.com  
  5.     DirectoryIndex index.html index.htm index.php  
  6.     <Directory />  
  7.     AllowOverride None  
  8.     Order allow,deny  
  9.     Allow from All  
  10.     </Directory>  
  11. </VirtualHost>  
  12.   
  13. <VirtualHost 127.0.0.2:80>  
  14.     DocumentRoot "D:\wamp\www\vv"  
  15.     ServerName ddh.com  
  16.     ServerAlias www.ddh.com  
  17.     DirectoryIndex index.html index.htm index.php  
  18.     <Directory />  
  19.     Options FollowSymLinks  
  20.     AllowOverride None  
  21.     Order allow,deny  
  22.     Allow from All  
  23.     </Directory>   
  24. </VirtualHost>  

 

第三种同IP不同域名和根目录(域名的话修改本地host演示)

将同一个端口映射成不同的域名,不同的域名映射到不同的站点。

在httpd-vhosts.conf文件中添加如下代码:

  1. <VirtualHost *:80>  
  2.     DocumentRoot "D:\wamp\www\dh"  
  3.     ServerName dh.com  
  4.     ServerAlias www.dh.com  
  5.     DirectoryIndex index.html index.htm index.php  
  6.     <Directory />  
  7.     AllowOverride None  
  8.     Order allow,deny  
  9.     Allow from All  
  10.     </Directory>  
  11. </VirtualHost>  
  12.   
  13. <VirtualHost *:80>  
  14.     DocumentRoot "D:\wamp\www\vv"  
  15.     ServerName ddh.com  
  16.     DirectoryIndex index.html index.htm index.php  
  17.     <Directory />  
  18.     Options FollowSymLinks  
  19.     AllowOverride None  
  20.     Order allow,deny  
  21.     Allow from All  
  22.     </Directory>   
  23. </VirtualHost>  

第二种写法

  1. <VirtualHost 127.0.0.1:80>  
  2.     DocumentRoot "D:\wamp\www\dh"  
  3.     ServerName dh.com  
  4.     ServerAlias www.dh.com  
  5.     DirectoryIndex index.html index.htm index.php  
  6.     <Directory />  
  7.     AllowOverride None  
  8.     Order allow,deny  
  9.     Allow from All  
  10.     </Directory>  
  11. </VirtualHost>  
  12.   
  13. <VirtualHost 127.0.0.1:80>  
  14.     DocumentRoot "D:\wamp\www\vv"  
  15.     ServerName localhost  
  16.     DirectoryIndex index.html index.htm index.php  
  17.     <Directory />  
  18.     Options FollowSymLinks  
  19.     AllowOverride None  
  20.     Order allow,deny  
  21.     Allow from All  
  22.     </Directory>   
  23. </VirtualHost>  

测试hosts设置

  1. 127.0.0.1       localhost  
  2. 127.0.0.1       test.wosn.net  
  3. 127.0.0.1       dh.com  
  4. 127.0.0.2       ddh.com  
  • 博主微信
  • 赶快加我来聊天吧
  • weinxin
  • 站长技术资源群
  • 群号:483950522
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: