所谓虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能。
虚拟主机的实现方法有三种,分别为:使用不用的端口,使用不同的IP和使用不用的主机名。下面就分别对这三种方法进行讲解。
注:在使用虚拟主机时,因为物理机提供了多个站点,所以在httpd的主配置文件中的根文件路径DocumentRoot一项要注释掉。此外,还要关闭SELinux。
一、使用不同的端口号实现虚拟主机
1、打开httpd的主配置文件/etc/httpd/conf/httpd.conf,编辑Listen项。其实也就是在此项中添加要监听端口号。
Listen 80
Listen 8080
2、建立虚拟主机。我们只需把要建立的虚拟主机放在主配置文件的<Virtual></Virtual>容器中即可。如现要建立test1.com和test2.com两个站点。
<VirtualHost *:80>
ServerName test1.com
DocumentRoot /web/vhosts/test1.com
</VirtualHost>
<VirtualHost *:8080>
ServerName test2.com
DocumentRoot /web/vhosts/test2.com
</VirtualHost>
3、创建站点目录
#mkdir -pv /web/vhosts/{test1,test2}.com
4、在站点中添加页面
echo "<h1>test1.com Page</h1>" >> /web/vhosts/test1.com/index.html
echo "<h1>test2.com Page</h1>" >>/web/vhosts/test2.com/index.html
注:在此只是为了演示效果所以写得比较简单。
5、重启web服务
6、测试。80是默认端口,所以省略也可以。
二、使用不同的IP建立虚拟主机
1、同上,我们仍要把站点建立在<Virtual></Virtual>容器中。但不同的是虚拟主机是以不同的IP来区别的。仍以上述两个站点为例。
<VirtualHost 192.168.0.72:80>
ServerName test1.com
DocumentRoot /web/vhosts/test1.com
</VirtualHost>
<VirtualHost 192.168.0.73:80>
ServerName test2.com
DocumentRoot /web/vhosts/test2.com
</VirtualHost>
2、此时站点和网页都使用上述内容。
3、重启web服务
4、测试。
三、使用不同的主机名建立虚拟主机
在使用不同的主机名时,需启用NameVirtualHost 一项。其实使用主机名的虚拟主机是最常使用的技术。在此我们建立www.magedu.com 和www.test.net两个虚拟主机。
1、建立虚拟主机。方法同上。
<VirtualHost *:80>
ServerName www.magedu.com
DocumentRoot "/web/vhosts/magedu"
</VirtualHost>
<VirtualHost *:80>
ServerName www.test.net
DocumentRoot "/web/vhosts/test"
</VirtualHost>
2、创建站点目录
#mkdir -pv /web/vhosts/{magedu,test}
3、在站点中添加页面
echo "<h1>Magedu Zone</h1>" >> /web/vhosts/magedu/index.html
echo "<h1>Test Zone</h1>" >> /web/vhosts/test/index.html
4、测试。 若没有启动DNS,则在验证时需在宿主机上添加解析条目。
至此,虚拟主机的简单建立就介绍完毕了。 其实也可以在虚拟主机中建立路径别名,用户认证,定义日志路径等。
下面就为test.com做一个BASIC认证。
1、在主配置文件中添加认证条目。因为是给test.com做认证,所以需要在它的虚拟容器中添加如下语句:
<Directory "/web/vhosts/test"
options none
AllowOverride AuthConfig
AuthType Basic
AuthUserFile /etc/httpd/conf/.htpasswd
AuthName "Basic_test of test.net"
Require valid-user
</Directory>
2、创建加密文件
使用htpasswd命令即可创建。第一次使用此命令时需要加上-c选项。
#htpasswd -c -m /etc/httpd/conf/.htpasswd gentoo //创建了一个gentoo用户
此时会提示输入密码,输入自定义的密码即可。
也可以使用htpasswd的-b选项可在命令行直接输密码。如
htpasswd -m -b /etc/httpd/conf/.htpasswd centos redhat //又创建了一个centos用户,密码为redhat
3、重启web服务并测试
此时在浏览器中输入http://www.test.net便会出现如下页面:
输入上述创建的任意一个用户名和密码便可登录。
登录后便可访问页面。
在此只演示了在虚拟主机中添加认证机制,其他的就不做介绍了。
转载于:https://blog.51cto.com/yuan00/923524