书接上回,虽然之前写的一些在httpd-2.2上的常用配置已经显得很全面了,但还有一些配置是我们不能忽略的:
13、status页面
LoadModule status_module modules/mod_status.so
这是一个服务器状态的页面,可以使管理员在客户端浏览器上通过输入路径找到并查看状态,比如我centos 6上用的ip是172.16.0.210,那么就在地址栏输入:172.16.0.210/server-status
从上图的hello world可以看出,这是我的主服务器,我并没有使用虚拟服务器(因为6上的主配置里有写好的,把注释去掉就能用)
注意:在centos 7上主配置里没有此条目,想用自己加,虚拟服务器就加在虚拟服务器的配置文件里,不论在6还是7上,格式其实只有头和尾的容器和第一行的 SetHandler server-status是必填的,其余后面的那些是之前所提到的用户访问控制
而如果设置了此条,我们将会得到更详细的页面信息
14、curl命令
curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传, http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
curl [options] [URL...]
curl的常用选项:
-A/--user-agent <string> 设置用户代理发送给服务器
--basic 使用HTTP基本认证
--tcp-nodelay 使用TCP_NODELAY选项
-e/--referer <URL> 来源网址
--cacert <file> CA证书 (SSL)
--compressed 要求返回是压缩的格式
-H/--header <line>自定义首部信息传递给服务器
-I/--head 只显示响应报文首部信息
--limit-rate <rate> 设置传输速度
-u/--user <user[:password]>设置服务器的用户和密码
-0/--http1.0 使用HTTP 1.0
15、user/group
指定以哪个用户的身份运行httpd服务进程;
配置文件中:
User apache
Group apache
16、使用mod_deflate模块压缩页面优化传输速度
适用场景:
(1) 节约带宽,额外消耗CPU;同时,可能有些较老浏览器不支持;
(2) 压缩适于压缩的资源,例如文件;
17、https, http over ssl
SSL会话的简化过程
(1) 客户端发送可供选择的加密方式,并向服务器请求证书;
(2) 服务器端发送证书以及选定的加密方式给客户端;
(3) 客户端取得证书并进行证书验正:
如果信任给其发证书的CA:
(a) 验正证书来源的合法性;用CA的公钥解密证书上数字签名;
(b) 验正证书的内容的合法性:完整性验正
(c) 检查证书的有效期限;
(d) 检查证书是否被吊销;
(e) 证书中拥有者的名字,与访问的目标主机要一致;
(4) 客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5) 服务用此密钥加密用户请求的资源,响应给客户端;
注意:SSL会话是基于IP地址创建;所以单IP的主机上,仅可以使用一个https虚拟主机;
配置httpd支持https:
(1) 为服务器申请数字证书;
测试:通过私建CA发证书
(a) 创建私有CA
(b) 在服务器创建证书签署请求
(c) CA签证
(2) 配置httpd支持使用ssl,及使用的证书;
# yum -y install mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
上述路径改为相应的配置
之前学习openssl时我曾在7上建立过自签证书,就顺便拿来用了
而此次我也将7作为主机,也就是自产自销
先生成私钥
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
接着生成请求:
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
上图为请求过程
下面我们要请求的CA就要签证了,因为就是自己,所以好办事
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
之后
~]#cp /etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/
最后配置httpd支持使用ssl,及使用的证书;
# yum -y install mod_ssl
此模块一般来说是要自己安装的
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
上述路径改为相应的配置
18、httpd自带的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具;
htdbm/htdigest
apachectl:httpd自带的服务控制脚本,支持start和stop;
apxs:由httpd-devel包提供,扩展httpd使用第三方模块的工具:Apache eXtenSion tool
rotatelogs:日志滚动工具;
access.log -->access.log, access.1.log -->access.log, acccess.1.log, access.2.log
suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户身份运行;
ab: apache bench
19、httpd的压力测试工具
ab, webbench, http_load, seige
jmeter, loadrunner
tcpcopy:网易,复制生产环境中的真实请求,并将之保存下来;
ab [OPTIONS] URL
-n:总请求数;
-c:模拟的并发数;
-k:以持久连接模式 测试;
以上就是httpd-2.2的基本配置
httpd-2.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
配置应用不同于httpd-2.2的地方:
(1) 切换使用的MPM
编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf,启用要启用的MPM相关的LoadModule指令即可。
(2) 基于IP的访问控制
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all denied
控制特定的IP访问:
Require ip IPADDR:授权指定来源的IP访问;
Require not ip IPADDR:拒绝
控制特定的主机访问:
Require host HOSTNAME:授权指定来源的主机访问;
Require not host HOSTNAME:拒绝
HOSTNAME:
FQDN:特定主机名
domin.tld:指定域名下的所有主机
<RequireAll>
Require all granted
Require not ip IP_ADDR
</RequireAll>
(3) 虚拟主机
基于FQDN的虚拟主机也不再需要NameVirutalHost指令;
<VirtualHost *:80>
ServerName
DocumentRoot
<Directory “ ”>
Options None
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
注意:任意目录下的页面只有显式授权才能被访问
(4) KeepAliveTimeout #ms
毫秒级持久连接时长定义;
熟悉了这些配置以后,我们就可以更好地管理web服务器,同时可以把一些配置写成脚本,既方便又能避免误操作带来的困扰。由于上述的一些差异,6和7上的脚本可能会有些不同,当然,牛人可以写一个在两者之间通用的脚本,但这对于我们来说,性价比还是太低了,有时候,还是自己动手去配置文件里改才最能解决问题。
原文地址:http://jiangzhi21.blog.51cto.com/11623203/1826549