一、 服务器status页
内生的status信息,可以通过web予以显示, 可以映射为url地址进行访问
1. 配置路径有几种不同方式
如果URL可以映射到文件系统映射上,尽量用directory
1) 配置文件系统路径访问属性
## 简单来说,就是实实在在存在的路径,在/etc/httpd/conf/httpd.conf 中配置下面容器。并且支持正则表达式 <Directory [~] ""> </Directory> ## 对于文件 <File [~] ""> </File>
2) 配置URL访问文件路径,不一定是实实在在存在的路径,有可能是系统内生的文件,只是通过web的形式来显示。比如status页面
<Location [~] ""> </Location> ## 专门用于做正则表达式 <LocationMatch ""> </LocationMatch>
2. 处理器:当文件被调用时,apache的内部表现形式, 每一种文件类型,都有种隐式的处理形式。
## 对于status页面而言,显式定义处理为,事例 <Location /server-status> SetHandler server-status # 使用server-status处理器处理/server-status AuthType Basic # 基本授权 AuthName "Server Status" # 授权名称 AuthUserFile "/etc/httpd/conf/.htpasswd" # 授权认证文件所在位置 Require valid-user Order deny,allow Allow from all </Location> ## 此设置相当于把server-status 页面映射到 , 并且只有特定用户才可以访问 ## 用命令创建用户认证文件 htpasswd -c -m /etc/httpd/conf/.htpasswd tom htpasswd -m /etc/httpd/conf/.htpasswd jerry ## 用宿主机尝试进行访问
二、 配置httpd服务器支持压缩
使用mod_deflate模块支持页面压缩
## 检查deflate模块是否装载 httpd -M | grep deflate Syntax OK deflate_module (shared) ## 在配置文件中配置deflate模块属性: 创建/etc/httpd/conf.d/deflate.conf 文件为一下内容 SetOutputFilter DEFLATE # mod_deflate configuration # Restrict compression to these MIME types AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/css # Level of compression (Highest 9 - Lowest 1) DeflateCompressionLevel 9 # Netscape 4.x has some problems. BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html ## 然后重启服务后,进行测试
可以看到Content-Encoding显示为gzip, 说明文件输出确实以gzip形式进行
三、 httpd相关的工具
1. 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的常用选项:
-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
2. 资源限定以及相关命令
软限定: 可以超管但是,只能超过一定量的时间
硬限定:决不能超过的限制
ulimit
-n [N]: 显示或限定能打开的最大的文件句柄数;
-u [N]: 所能够运行的最多进程数;
配置文件:/etc/security/limits.conf,扩展配置:/etc/security/limits.d/*.conf
3. ab 命令, 服务器标准压力测试软件
-c: 模拟的并发数
-n: 总请求数
其他压力测试工具: http_load, webbench, seige, tcp_copy(使用真实环境下的请求重放)
4. httpd RPM安装后产生的自带工具
httpd: Apache 服务器。
apachectl:Apache HTTP 服务器控制工具。当自行编译没有服务脚本时,可以使用这个作为服务脚本
ab:Apache HTTP 服务器性能基准工具。
ulimit : 资源限定查看和修改命令
apxs:Apache 扩展工具。
configure:配置源代码。
dbmmanage:为基本认证创建和更新 DBM 格式的用户认证文件。
htcacheclean:清理磁盘缓存。
htdigest:为摘要认证创建和更新用户认证文件。
htdbm:操作 DBM 密码数据库。
htpasswd:为基本认证创建和更新用户认证文件。
httxt2dbm:为 RewriteMap 创建 dbm 文件。
logresolve:将 Apache 日志文件中的 IP 地址解析到主机名称。
rotatelogs:不关闭 Apache 而切换日志文件。
suexec:执行外部程序前切换用户。当用户请求的文件不能被appache用户请求时,可以临时以特定用户身份来获取。
四、 httpd 2.4编译安装
1. 解决依赖关系, httpd-2.4 依赖高版本的apr(apache portable runtime)和apr-util软件包。 并且依赖pcre-devel perl兼容的正则表达式库
1) 安装开发工具和pcre-devel包
# yum -y install pcre-devel # yum -y groupinstall "Development tools"
2) 编译安装apr-1.5.2
# tar -xf apr-1.5.2.tar.gz # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr # make && make install
3) 编译安装apr-util-1.5.4
# tar -xf apr-util-1.5.4.tar.gz # cd apr-util-1.5.4 # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr # make && make install
2. 编译配置httpd-2.4.12
1) httpd-2.4新特性:
MPM支持在运行时装载;
–enable-mpms-shared=all –with-mpm=event
支持event
异步读写
在每模块及每目录上指定日志级别
每请求配置;<If>, <Elseif>
增强版的表达式分析器
毫秒级的keepalive timeout
基于FQDN的虚拟主机不再需要NameVirtualHost指令
支持使用自定义变量
新增了一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip
对于基于IP的访问控制做了修改,不再支持使用order, allow, deny这些机制;而是统一使用require进行
2) httpd-2.4编译安装
## 编译安装 # tar -xf httpd-2.4.12.tar.gz # cd httpd-2.4.12 # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-ssl --enable-cgi --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=event # make && make install ## configure 个选项意义 --prefix=/usr/local/apache : 设置安装路径 --sysconfdir=/etc/httpd24 : 设置配置文件安装路径 --enable-ssl : 支持使用ssl库 --enable-cgi : 支持使用cgi脚本 --enable-rewrite : 支持重写 --with-zlib : 支持使用压缩库 --with-pcre : 支持使用perl正则表达式库 --with-apr=/usr/local/apr : apr安装位置 --with-apr-util=/usr/local/apr-util : apr-util安装位置 --enable-modules=most : 编译支持大部分模块 --enable-mpms-shared=all : 编译支持所有mpms模块 --with-mpm=event : 默认使用event模块 ## 导出头文件 # ln -sv /usr/local/apache/include /usr/include/httpd ## 导出库文件, httpd没有额外的库文件生成,如果有的话,创建/etc/ld.so.conf.d/httpd24.conf, 并且把库文件目录添加在其中,并执行下面命令 # ldconfig # idconfig -p 用于查看已经装载的库文件 ## 导出man手册。 在/etc/man.config 中添加 MANPATH /usr/local/apache/man ## 导出二进制程序,创建/etc/profile.d/httpd.sh 写入下面一行 export PATH=/usr/local/apache/bin:$PATH
3) 预备服务脚本,使用老版本httpd的服务脚本进行修改
# cp /etc/init.d/httpd /etc/init.d/httpd24 # vim /etc/init.d/httpd24 修改如下几行 apachectl=/usr/local/apache/bin/apachectl ## 设置新的apachectl 路径 httpd=/usr/local/apache/bin/httpd ## 新的httpd路径 prog=httpd24 ## 程序名称改为http24 pidfile=${PIDFILE-/var/run/httpd24.pid} ## 重新修改pid文件路径 lockfile=${LOCKFILE-/var/lock/subsys/httpd24} ## 设置新的锁文件名,防止冲突 # vim /etc/httpd24/httpd.conf 添加下面一行指令,来修改pid文件地址 PidFile "/var/run/httpd24.pid" 添加httpd24服务, 设置开机自动启动,关闭老版本httpd防止版本冲突 # chkconfig --add httpd24 # chkconfig httpd off # chkconfig httpd24 on # service httpd24 start # ss -tnlp | grep "httpd" tcp LISTEN 0 128 :::80 :::* users:(("httpd",44350,4),("httpd",44352,4),("httpd",44353,4),("httpd",44354,4)) # ps aux | grep "httpd" root 44350 0.0 0.1 76980 2320 ? Ss 18:07 0:00 /usr/local/apache/bin/httpd daemon 44352 0.0 0.2 421240 4132 ? Sl 18:07 0:01 /usr/local/apache/bin/httpd daemon 44353 0.0 0.2 486776 4752 ? Sl 18:07 0:01 /usr/local/apache/bin/httpd daemon 44354 0.0 0.2 421240 4160 ? Sl 18:07 0:01 /usr/local/apache/bin/httpd 可以看到,一个主进程,另外event默认配置为三个工作进程,默认用户为daemon
4) 新特性,基于IP访问控制
允许所有主机访问:Require all granted
拒绝所有主机访问:Require all deny
控制某主机的访问: ## 基于ip Require ip IPADDR Require not ip IPADDR IPADDR: 单个IP地址, 例如172.16.100.7 Network/Netmask, 例如172.16.0.0/255.255.0.0 Network/Length, 例如172.16.0.0/16 Net: 172.16 例如: Require ip 172.16.0.0/16 ## 基于主机名 Require host HOSTNAME Require not host HOSTNAME HOSTNAME: FQDN:具体的主机 DOMAIN: 域名, 例如 www.playground.com
原创文章,作者:以马内利,如若转载,请注明出处:http://www.178linux.com/4705
评论列表(4条)
以马内利的文章每次都比其它同学更有深度。赞
@stanley:I/O模型纠结了老半天,不知道该怎么表达,看了好几遍,还是觉得理解的很浅
求前辈出一个完整的httpd+openssl的教程,从编译安装到配置一步一步下来,面向小白的,多谢!
(原因是网上看了很多教程,但是都是httpd和openssl分开讲的,里面很多细节都不太明白,新手希望能有一个一步一步跟着做的教程是最好的,先实现结果,再追求理论细节。再次感谢!)
@浅蓝:httpd + openssl 就是实现https协议啦,我这个系列的总结中,我写过一个实现https的,
http://www.178linux.com/archives/4671
我也是个新手,就是一边学一边总结。 仅供参考