一、WWW服务器虚拟主机原理 
WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器。比如由一台机器同时提供 http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉 不到这种方式下跟由不同的机器提供不同的服务有什么差别。

使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度。另外,对于个人用户,也可以使用这种虚拟主机方式来建立有自己独立域名的WWW服务器,目前国内有很多公司都提供这种免费的服务。

1.1 基于IP地址的虚拟主机方式
1.2 基于主机名的虚拟主机方式

在配置文件下进行设置相关的配置

 

[root@desktop40 ~]# vi /etc/httpd/conf/httpd.conf

NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html
ServerName desktop40.example.com
ServerAlias desktop40
</VirtualHost>
<VirtualHost *:80>
ServerAdmin josion@example.com
DocumentRoot /www40/virtual
ServerName www40.example.com
ServerAlias www40
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

[root@desktop40 ~]#

mkdir -p /www40/virtual

[root@desktop40 ~]#

chcon --reference=/var/www/html/ /www40 -R    //selinux上下文的权限

[root@desktop40 ~]#

  cd /www40/virtual/

[root@desktop40 ~]#

echo 'www40.example.com'>index.html

记得得有域名的解析所以

[root@desktop40 ~]#

vi /etc/hosts

192.168.0.40   desktop40.example.com

192.168.0.40   www40.example.com

接下来重启服务

实验看是否成功,记得防火墙和selinux的问题将其挡掉!!!

(1)修改配置文件
vi /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin josion@example.com
DocumentRoot /www40/virtual
ServerName www40.example.com
ServerAlias www40
ScriptAlias /cgi-bin/ "/www40/virtual/cgi-bin/"   //别名~

ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>

<Directory "/www40/virtual/private">     //以下是关于私有文件的访问控制。
authname "josion"
authtype basic
authuserfile /etc/httpd/.htpasswd
require user josion
</Directory>

(2)mkdir /www40/virtual/cgi-bin
mkdir /www40/virtual/private
cd /www40/virtual/cgi-bin
wget ftp://instructor/pub/gls/special.cgi .
chcon --reference=/var/www/cgi-bin /www40/virtual/cgi-bin -R
cd /www40/virtual/private
echo private > index.html
chcon --reference=/var/www/html /www40virtual/private -R

(3)htpasswd -cm /etc/httpd/.htpasswd josion(输入密码)
(4)service httpd restart