httpd2.4:
新特性:
1) MPM支持运行为DSO机制;以模块形式按需加载;
2) event MPM生产环境可用;
3) 异步读写机制;
4) 支持每模块及每目录的单独日志级别定义;
5) 每个请求相关的专用配置;
6) 增强版的表达式分析式;
7) 毫秒级持久连接时长定义;
8) 基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
9) 新指令,AllowOverrideList;
10)支持用户自定义变量;
11)更低的内存消耗;
新模块:
1) mod_proxy_fcgi
2) mod_proxy_scgi
3) mod_remoteip
安装httpd2.4
依赖于apr-1.4+,apr-util-1.4+,[apr-iconv]
apr:apache portableruntime
centos 6:
默认:apr-1.3.9,apr-util-1.3.9;
安装httpd2.4必须得手动编译安装;
开发环境包组:DevelopmentTools,Server Platform Development
开发程序包:pcre-devel
编译安装步骤:
1) apr-1.4+
#./configure�Cprefix=/usr/local/apr
#make&& make install
2) apr �Cutil-1.4+
#./configure�Cprefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make&& make install
3) httpd-2.4
#./configure�Cprefix=/usr/local/apache24 -sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --enable-modules=most--enable-mpms-shared=all --with-mpm=prefork
#make&& make install
自带的服务控制脚本:apachectl
示例:在centos6上编译安装httpd2.4;
1. 准备开发环境包组:Development Tools,Server PlatformDevelopment;
2. 准备开发程序包:pcre-devel;
3. 准备apr-1.5.0,apr-util-1.5.3;
4. 编译安装步骤;
1) 编译安装apr-1.5.0;
a. 安装前准备,解压缩,进入目录;
b. ./configue命令;
c. make && make install
2) 编译安装apr-util-1.5.3;
a. 安装编译前准备,解压缩,并进入文件夹;
b. ./configue命令;
c. make && make install
3) 安装编译httpd-2.4
a. 安装编译前准备,准备httpd-2.4,解压缩,进入文件夹;
b. ./configue命令;
c. make && make install
5. 内置工具apachectl开启服务,测试80端口是否打开;
6. 配置文件在/etc/httpd24;
Centos7: httpd-2.4
配置文件:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.modules.d/*.conf
/etc/httpd/conf.d/*.conf
配置应用:
1. 切换使用的MPM
编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf,启动要启用的MPM相关的LoadModule指令即可;
Note:启用即去掉#即可,
2. 基于IP的访问控制;
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all deny
控制特定的ip访问:
Require ip IPADDR:授权指定来源的ip访问;
Require not ip IPADDR:拒绝;
控制特定的主机访问:
Require host HOSTNAME:授权指定来源的主机访问;
Require not host HOSTNAME:拒绝
HOSTNAME:
FQDN:特定主机;
Domain.tld:指定域名下的所有主机
示例:centos7主机:192.168.19.130;测试机192.168.19.134
<Requireall>
Require all granted
Require not ip 192.168.19.128
<Requireall>
1) 开启服务;
2) 测试机访问这台centos7 web服务器;
Note:测试时需要关闭centos7的selinux和iptables;
3) 编辑配置文件,基于IP访问控制;
4) 再次用测试机访问测试;
Note:此次测试需要将/etc/httpd/conf.d目录下的welcome.conf重命名;否则测试机访问将依旧能访问;
5) 将配置文件的ip限制取消,测试机将再次可以访问;
3. 虚拟主机
基于FQDN的虚拟主机也不再需要NameVirutalHost指令:
1) 注释DocumentRoot指令;
2) 编辑虚拟主机配置文件,
3) 重载服务,并编辑创建相关目录文件;
4) 测试;
4. ssl
5. KeepAliveTimeout #ms
毫秒级持久连接时长定义;
练习题:
1、建立httpd服务,要求:
(1)提供两个基于名称的虚拟主机:
www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log;
www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2/error_log,访问日志为/var/log/httpd/www2/access_log;
(2)通过www1.stuX.com/server-status输出其状态信息,且要求只允许提供账号的用户访问;
(3)www1不允许192.168.19.134ip主机访问;
演示:
1. 修改配置文件;
2. 创建相关目录及文件;
1) 创建用户组访问控制需要的密码文件;
2) 创建日志目录;
3) 创建DocumentRoot目录;
4) 创建index.html文件;
3. 在测试机上编辑/etc/hosts文件;
4. 重载服务及测试;
1) 在192.168.19.134主机上测试,分别访问www1.stuX.com,www2.stuX.com;
访问www1.stuX.com:
访问www2.stuX.com:
2) 在192.168.19.128主机上测试,访问www1.stuX.com;
结果可以访问,可以看出,配置的基于ip限制访问是有效的;
3) 在192.168.19.134主机上测试,访问www1.stuX.com/server-status,www2.stuX.com/server-status;
访问www1.stuX.com/server-status:输入jerry的账号时,不在组内,不能访问;
访问www1.stuX.com/server-status:输入tom的账号时,能查看;
访问www2.stuX.com/server-status:在配置文件中没有设置从此处输出配置信息;
2、为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用国家(CN),州(Jiangsu),城市(Suzhou),组织为(Amaxchina);
(2)设置部门为Ops,主机名为www2.stuX.com;
演示:在上面的http服务器上进行操作,
1. 建私有CA;
2. httpd服务器申请证书;
3. CA签署证书;
4. 配置httpd支持使用ssl;
1) 安装ssl模块;
2) 检查是否安装完成;
3) 修改ssl配置文件;/etc/httpd/conf.d/ssl.conf;
5. 编辑/etc/hosts文件;
6. 重启,测试;
1) 查看监听端口;
可以看出443端口和80端口都已开启;
2) 访问测试;
访问http无问题,访问https被告知需要证书;
利用curl --cacert /path/to/cafile.pem URL 测试;