Apache虚拟主机的几种基本配置
虚拟主机是服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP、FTP、邮件等多种服务。将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外展现为一个服务器,从而充分利用服务器硬件资源。如果划分是系统级别,则成为虚拟服务器。
一、虚拟主机具有三种建立模式:
1、基于IP地址
2、基于端口 3、基于FQDN
好,废话不多说,直接上例子:
1、基于IP
如果希望使用172.16.4.1可以访问到/www/htdocs目录的内容,使用172.16.4.2可以访问到/www/web2目录中的内容,就需要配置/etc/httpd/conf/httpd.conf文件中的虚拟主机区域:
<VirtualHost172.16.4.1>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/htdocs##这里指的网页存放的目录ServerName172.16.4.1##这里指的是网站的访问的IP地址Errorlog/var/log/htdocs_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/htdocs_access.log##这里是定义访问网站的日志存放地点</VirtualHost><VirtualHost172.16.4.2>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/web2##这里指的网页存放的目录ServerName172.16.4.2##这里指的是网站的访问的IP地址Errorlog/var/log/web2_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/web2_access.log##这里是定义访问网站的日志存放地点</VirtualHost>
注:这里默认监听的端口是80,如果需要重新设置,只需要在IP地址后面跟上端口号即可。
2、基于端口
如果希望使用172.16.4.1的80端口访问/www/htdocs目录的内容,使用172.16.4.1的8080端口访问/www/web2目录的内容,就需要在/etc/httpd/conf/httpd.conf里做如下的配置:
<VirtualHost172.16.4.1:80>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/htdocs##这里指的网页存放的目录ServerName172.16.4.1:80##这里指的是网站的访问的IP地址以及端口号Errorlog/var/log/htdocs_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/htdocs_access.log##这里是定义访问网站的日志存放地点</VirtualHost><VirtualHost172.16.4.1:8080>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/web2##这里指的网页存放的目录ServerName172.16.4.2:8080##这里指的是网站的访问的IP地址已经端口号Errorlog/var/log/web2_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/web2_access.log##这里是定义访问网站的日志存放地点</VirtualHost>
3、基于FQDN,这也是最常用的方法
如果需要使用访问/www/htdocs目录下的内容,使用目录下的内容时,就需要将虚拟主机按照下面的配置方式进行配置:
<VirtualHost172.16.4.1>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/htdocs##这里指的网页存放的目录##这里指的是访问网站时用的域名即FQDNErrorlog/var/log/htdocs_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/htdocs_access.log##这里是定义访问网站的日志存放地点</VirtualHost><VirtualHost172.16.4.1>ServerAdminagony@##这里指网站的管理员的邮箱地址DocumentRoot/www/web2##这里指的网页存放的目录##这里指的是网站的访问的IP地址已经端口号Errorlog/var/log/web2_erro.log##这里是定义访问网站错误日志的存放地点CustomLog/var/log/web2_access.log##这里是定义访问网站的日志存放地点</VirtualHost>
注:当使用基于FQDN建立虚拟主机时还需要开启这项<NameVirtualHost 172.16.4.1:80>,该项在httpd-2.2.3的配置文件中是存在的,在httpd-2.4.1中没有该项。
二、别名的配置
当需要用户请求的URL过长时,在Apache中可以通过别名的配置减少客户端URL的输入量,并且通过别名可以跳转网页存放的目录,
例如:
apache的默认存放网页目录为/www/htdocs中,其访问FQDN为,现需要访问/www/phpmyadmin目录中的网页,那么就可以使用别名来定义,具体配置如下:
NameVirtualHost172.16.4.1:80<VirtualHost172.16.4.1:80>Alias/php"/www/phpmyadmin"ServerAdminagony@DocumentRoot/www/Errorlog/var/log/htdocs_erro.logCustomLog/var/log/htdocs_access.log</VirtualHost>
这时用户只需要在将URL置于/php即可正常访问/www/phpmyadmin目录中的内容。
Alias string FilePath string:指访问原网页的URL后面追加的那段字符串 FilePath:指需要跳转到哪个目录。
三、客户端的访问控制
Apache默认情况下,允许所有客户端对已配置好的网站进行访问,通过Order、Allow、From、Deny这些参数来允许和阻止指定客户端对网站中的目录或内容的访问控制的。
客户端的制定方法:
1、具体的IP地址
2、指定的网络
3、FQDN
4、域
5、所有的客户端,使用关键字"All"
例如:这个网站只允许172.16.0.0/16网络中的主机访问。
<VirtualHost172.16.4.1:80>ServerAdminagony@DocumentRoot/www/Errorlog/var/log/htdocs_erro.logCustomLog/var/log/htdocs_access.log<Directory/www/htdocs>OrderAllow,DenyAllowFrom172.16.0.0/16</Directory></VirtualHost>
注:Order Allow,Deny,如果没有其他的Allow或Deny定义,则其默认动作为Order最后一个动作,在这里是Deny,如果是"Order Deny,Allow",则其默认动作为Allow。
四、基于用户认证的方式进行访问
在Apache的默认情况下,允许客户端进行匿名访问,Apache可以实现基于身份认证和摘要式身份验证。这里只做基本身份验证的实现详解。
在做基本身份验证时,认证用户来源可以是htpasswd工具生成的密码文件。
具体实现步骤:
1、使用apache自带的htpasswd工具生成密码文件来作为用户访问认证的来源
格式:htpasswd options FilePath user
-c :第一次创建时使用该选项
-m :将密码使用MD5加密存放
-D :从密码文件中删除用户
如:创建一个用户redhat,将密码文件存放在/etc/httpd/.htpasswd
#htpasswd -cm /etc/httpd/.htpasswd redhat
删除用户
#htpasswd -D /etc/httpd/.htpasswd redhat
2、对指定的网页目录使用基本身份认证
如对网站的访问需要基于用户认证
配置apache的主配置文件:/etc/httpd/conf/httpd.conf
NameVirtualHost172.16.4.1:80<VirtualHost172.16.4.1:80>ServerAdminagony@DocumentRoot/www/Errorlog/var/log/htdocs_erro.logCustomLog/var/log/htdocs_access.log<Directory/www/htdocs>AuthNamePRIVATE##这里指在需要用户认证时的提示信息AuthTypeBasic##这里指认证的类型为基本认证AuthUserFile/etc/httpd/.htpasswd##这里指存放密码文件的路径Requirevalid-user##这里指密码文件中允许访问的用户,这里指的是全部,如果要具体允许某些用户则可写为"RequireUserredhatcentos"</Directory></VirtualHost>
好了,到此apache的几种常用的配置到此就完成了,只需要重新载入配置文件或者重启服务即可生效了,下篇将讲述apache启用https功能。