Apache之所以受到很多公司的亲睐,正是他的开源代码,跨平台,模块化设计,功能灵活,不仅性能稳定,安全性也表现出色。下面我们就一起看看他安全性的表现,以及虚拟主机的配置。

http服务的访问控制:

主机控制

在apache的主配置文件中,通过配置项 Order,Denyfrom,allowform 可以限制客户机ip或者是主机名的访问,其中order 用来设置限制顺序,denyfrom和allowfrom用来设置具体的内容。

Order: 决定匹配的顺序

allow,deny 先允许 后拒绝 默认拒绝所有没有明确允许的客户端。

deny,allow 先拒绝 后允许,默认允许所有没有明确拒绝的客户端。

可以用all 来指定所有的地址。

(续)Apache--虚拟主机_配置文件

下面我就来限制一下

(续)Apache--虚拟主机_安全性_02

这样就除了192.168.1.1以外的全都会拒绝掉了。

(续)Apache--虚拟主机_客户机_03

表示没有权限

用户认证:

在主配置文件的“目录”中

添加

AuthName:定义受保护的领域名称,也可以理解为是提示信息。

AuthType:设置认证类型,Basic 表示基本认证。

AuthUserFile:设置用于保存用户账号,密码的文件路径。

Requite valid—user :要求认证文件中只有合法的用户才能访问其中 valid-user表示所有合法用户,若要指定单个用户 后面跟上指定的用户名。

下面来测试一下

(续)Apache--虚拟主机_源代码_04

然后再用htpasswd 命令指定认证文件和用户以及密码

(续)Apache--虚拟主机_配置文件_05

-c 是创建认证文件 后面跟上用户名robin

第二次创建用户的时候就不用加-c 了  因为文件已经存在了  不然会提示 覆盖操作

可以看出现在有两个用户 以及加密的密码。

访问一下

提示要认证

(续)Apache--虚拟主机_源代码_06

Robin用户已经成功登陆

(续)Apache--虚拟主机_客户机_07

否侧提示没有认证成功

(续)Apache--虚拟主机_源代码_08

以上都是体现了Apache的安全性方面,接下来是怎么样构建虚拟主机

什么是虚拟web主机, 虚拟web主机就是在同一台服务器中运行多个web站点,每个站点并不是完全占有整个服务器。因此称为 ‘虚拟的web’主机,通过虚拟主机可以大大减少web站点的成本和维护费用。

无论是微软的IIS网站服务,还是Apache 以及后面要研究的Nginx 构建虚拟主机的方法无外乎三种方法:

基于域名: 服务器的一个ip对应多个不同的域名。

基于ip地址:每个虚拟主机的域名不同,切对应的ip也不一样,也就是说,一台服务器上有多个ip地址。

基于端口:我们知道http 是监听的80 端口,如果我们将不同的虚拟主机监听的端口都不一样的话 也能够实现虚拟主机, 但是客户端访问的时候要指定端口访问,因为浏览器默认访问服务器的80端口。

Apache配置虚拟主机的主要配置文件除了之前的httpd.conf之外,还有就是httpd-vhosts.conf 默认是放在Apache安装目录下的conf/extra/ 下

下面就来操作一下

显示基于域名 的

因为是靠域名范文 就要有域名解析 这里因为环境问题 我就把两个域名直接写在hosts文件当中了      同一个ip对应不同的域名

(续)Apache--虚拟主机_安全性_09

域名问题解决了 还有网页文件的问题 我就手工写两行网页文件

mkdir 创建了两个站点的根目录  echo 命令是向index.html 默认文档中写入内容

(续)Apache--虚拟主机_客户机_10

最后就是配置两个配置文件了

先是 httpd的主配置文件 要让他支持虚拟主机的功能 。

默认这一项是注释掉的 如图

(续)Apache--虚拟主机_源代码_11

取消他的注释 重启服务即可

另一个就是 httpd-vhosts.conf配置文件了  这里的默认位置如图:

(续)Apache--虚拟主机_安全性_12

一般在配置虚拟主机的时候 主要配置的是这几个方面的内容

监听地址: 包括 ip  端口号 由NameVirtualHost 配置项指定

虚拟主机区域:其中包括主机名称 网页更目录,管理员邮箱 以及log方面

目录权限:为每一个虚拟主机所在的目录配置访问权限。

httpd—vhosts.conf 文件中默认有虚拟主机的示例,我们只要稍作改动即可

(续)Apache--虚拟主机_源代码_13

NameVirtualHost:指定要所有虚拟主机要监听的地址和端口  * 代表所有

<VirtualHost *:80>

……

…… 省略

</VritualHost> : 虚拟主机区域,不同的区域就以这个标志区分

ServerAdmin : 指定管理员邮箱

DocumentRoot:指定网页的根目录

Server-Name:指定网站名称

ServerAlias:网站的别名

Errolog: 错误日志存放位置  

CustomLog:访问日志存放位置   common 格式为通用

知道这些参数作用之后 就根据刚才创建的网页和网页目录修改

(续)Apache--虚拟主机_虚拟主机_14

然后重启服务 浏览器访问

百度

(续)Apache--虚拟主机_虚拟主机_15

51cto

(续)Apache--虚拟主机_客户机_16

好了  然后是根据端口做虚拟主机

只要把创建虚拟主机三种方法的原理弄明白,就很好配置了,只需要继续做改动就可以

先改动httpd.conf主配置文件 因为他默认只监听了80 端口 所以要添加  这里我添加了51端口 (要保证这个端口没有被其他的服务所占用)

(续)Apache--虚拟主机_配置文件_17

虚拟主机方面也要更改

(续)Apache--虚拟主机_客户机_18

另外 建议httpd-vhosts.conf 中默认监听的80 给他注释掉 有每个虚拟主机中的配置决定监听的地址

(续)Apache--虚拟主机_客户机_19

浏览器访问

(续)Apache--虚拟主机_配置文件_20

哦了

关于基于ip的配置方法就不详细解释了 他并不是最常用的,原因是公网的ip造价高,小公司用不起啊!Apache就介绍到这吧。有时间在介绍下windows下Apache的配置。(其实前面博客已经稍稍介绍了一点了 (续)Apache--虚拟主机_配置文件_21

Ps:我今天微博添加了一些比较冷门的音乐,有兴趣的可以多串串。