您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

安装这些模块,以改善Apache Web服务器

添加时间:2012-7-31 20:37:56  添加: 思海网络 

Apache依然是世界上最受欢迎的Web服务器,这一方面归功于数量众多的功能强大的模块,它们可以协同运行,增强这款Web服务器的核心功能。本文介绍了一些实用的Apache模块,它们可以为你的Web服务器改善性能、内容分发和总体安全。

改善性能的模块

虽然最新版本的Apache本身运行良好,但是你可以通过部署诸多模块——这些模块可压缩输出、消除不必要的载荷以及优化HTML和CSS代码,优化这款Web服务器,从而减少耗用资源、改进内容分发。

默认情况下,在CentOS中,Apache在预派生(prefork)模式下运行其多路处理模块(MPM);在这种模式下,父进程负责派生足够多的子进程,以满足所有远程客户端试图访问服务器的要求。不过,按照客户端的需要动态管理进程不是非常高效,那是由于每次开始和终止操作很花时间和资源。ModPrefork解决了这个不足,它让你可以为等待客户端请求的备用Apache子实例配置最小(和最大)数量。 不过,这项功能不够灵活和敏捷,无法满足请求偶尔出现峰值的繁忙网站的需要。

ModWorker解决了ModPrefork的性能问题,它使用线程来满足大量请求的需要,耗用的系统资源比较少。想在CentOS下启用ModWorker,编辑文件/etc/sysconfig/httpd,去掉HTTPD=/usr/sbin/httpd.worker这一行的注释。然后运行命令service httpd restart,重启Apache。想确认Apache在什么模式下运行,请使用命令apachectl –l,列出Apache所有已装入模块、寻找worker.c。

遗憾的是,ModWorker并非与所有Apache模块兼容,包括诸如ModPHP之类的常见模块。在启用它之前,你应该检查兼容性,需要的话还要另辟蹊径。比如说,要是你同时需要ModWorker和PHP,就可以使用Mod_FastCGI代替ModPHP。

借助ModPagespeed优化内容

一旦你优化了Apache的服务器端,就可以开始改进内容分发了。ModPagespeed(http://code.google.com/p/modpagespeed/)是由谷歌开发的第三方、一体化的优化模块,它使用ModDeflate来改写和压缩输出,从而提供一种更快速的客户端体验。它会自动运用来自PageSpeed(https://developers.google.com/speed/pagespeed/)的运用最佳实践,PageSpeed是可以用来优化网页性能的一套工具。虽然ModPagespeed仍正式处于测试版状态,但它是个成熟的项目。如果使用ModPagespeed,你就可以避免迫使开发人员和设计人员手工优化HTML、CSS和Java代码以及图像。查看该模块的功能页面(http://www.modpagespeed.com/),即可了解更多信息和有用的比较。

你可以从源文件或通过二进制程序包来安装ModPagespeed。至于CentOS,你可以使用来自ModPagespeed下载页面(https://developers.google.com/speed/pagespeed/)的官方安装程序包。一旦你下载了与你的CentOS架构(32位或64位)对应的程序包,运行命令rpm -ivh mod-pagespeed*.rpm来安装它。重启Apache,并运行命令apachectl -t -D DUMP_MODULES,确保ModPagespeed已安装和装入。在这个命令的输出中,你应该能在所列的模块当中找到pagespeed_module。

接下来,打开配置文件/etc/httpd/conf.d/pagespeed.conf,检查所有的可用选项。在Allow from 127.0.0.1后面添加新的一行,让你的本地客户端IP地址出现在命令中;比如说,如果你的IP地址是192.168.0.2,就添加Allow from 192.168.0.2。一旦你重新装入Apache,就能够在http://yourserverip/mod_pagespeed_statistics处看到ModPagespeed的统计信息。这让你可以更快速地了解它,看到优化后的结果。

借助ModSecurity确保绝对安全

ModSecurity是面向Apache的最受欢迎的安全模块。我们之前写过一篇文章,题为《借助ModSecurity保护和审查你的Web服务器》(http://olex.openlogic.com/wazi/2011/protect-and-audit-your-web-server-with-apaches-modsecurity/),对它已作了介绍,所以我们这里只表示它可以提供全面的Web流量检查、封阻和审查功能,让你可以保护Web服务器,远离已知和未知的安全漏洞,包括分布式拒绝服务(DDOS)攻击。

借助ModGeoIP检测访客的所在国家

ModGeoIP基于MaxMind的GeoIP数据和技术(http://www.maxmind.com/app/ip-location),它让你只要使用本地保存的GeoIP数据库,就可以确定访客的所在国家。一旦你知道了访客的所在国家,就能处理一些事务,比如把他重定向至某个特定的网页或者拒绝对方访问。

想安装ModGeoIP,你首先需要C库和程序包zlib-devel,这是前提条件。下载GeoIP C库的最新版本(http://www.maxmind.com/download/geoip/api/c/),对它进行抽取,然后执行通常的安装步骤,执行./configure && make && make install。

接下来,安装ModGeoIP本身。下载最新版本,对它进行抽取,然后执行apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c。apxs命令的变量意味着,把该模块安装到默认模块目录/usr/lib/httpd/modules/,借助LoadModule命令把它装入到Apache以此来激活它,使用/usr/local/lib里面的库,加入/usr/local/include目录,搜索库GeoIP,然后通过C源文件来进行编译。

一旦你重启Apache后,ModGeoIP模块应该列在命令apachectl -t -D DUMP_MODULES的输出中。想启用它,创建一个文件/etc/httpd/conf.d/geoip.conf,把在整个服务器范围内启用该模块的命令以及含有GeoIP数据库的二进制文件路径放到它里面:

GeoIPEnable On

GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat

随后,你可以开始根据Apache目录或虚拟主机配置来使用ModGeoIP,或者借助本地.htaccess文件。配置选项一样。比如说,如果你想拒绝来自美国境外的任何访客访问:

SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry

Deny from all

Allow from env=AllowCountry

想了解更多例子和信息,请参阅ModGeoIP的主页(http://www.maxmind.com/app/mod_geoip)。

借助ModStatus进行监控

你应该总是监控Apache或任何服务,以确保性能最佳。Apache的ModStatus模块为你提供了关于当前服务器运行状况的信息。

ModStatus默认情况下安装在CentOS中,但并未被启用。想启用它,打开Apache的主配置文件/etc/httpd/conf/httpd.conf,去掉下面代码的注释,把your_ip换成你的IP:

SetHandler server-status

Order deny,allow

Deny from all

Allow from your_ip

此外,去掉ExtendedStatus On的注释,那样你就能看到更多信息,比如当前请求访问的URL。重新装入Apache,试试访问http://yourserver/server-status,证实ModStatus在正常运行。在刚打开的页面上,你应该能够看到与Apacehe及其进程(分支进程或线程)和处理器使用情况有关的所有统计信息。

如果你在其URL:http://yourserver/server-status?auto的末尾加上?auto,ModStatus还能得出机器可读的输出。然后,其他程序就能阅读和分析输出。自动模式数据被Cacti用来以实用趋势绘制图形,以及被Nagios用来监控有无异常问题。

借助ModSpamhaus进行保护

某些IP地址已知受到了危及,已知发送垃圾邮件或被用于DDOS攻击及其他恶意活动。Spamhaus项目是核查IP地址声誉的最佳公共来源。人们通常认为Spamhaus是一个与邮件服务器有关的项目,但由于需要类似的Web服务器保护机制,结果促使有人为Apache开发了ModSpamhaus,这个扩展模块让系统管理员可以阻止有人通过声名狼藉的IP地址进行访问。

想安装ModSpamhaus,先下载最新的安装程序包(http://sourceforge.net/projects/mod-spamhaus/files/latest/download),对它进行抽取。找到src目录中的文件mod_spamhaus.c,执行命令apxs -i -a -c mod_spamhaus.c,手动创建这个Apache模块。变量告诉apxs将该模块安装到默认的模块目录usr/lib/httpd/modules/中,使用LoadModule命令把它装入到Apache来激活它,并通过C源文件来进行编译。

接下来,创建ModSpamhaus的配置文件/etc/httpd/conf.d/spamhaus.conf。填入下列配置选项:

MS_METHODS POST,PUT,OPTIONS,CONNECT

MS_WhiteList /etc/spamhaus_whitelisted

MS_CacheSize 1000

就大多数架构而言,这个普通的配置可以被接受。MS_METHODS选项定义了应该检查哪些HTTP方法:POST、PUT、OPTIONS和CONNECT。如果你在防范DDOS攻击或你的Web表单使用GET方法,还要添加GET。选项MS_WhiteList让你可以用加入白名单的IP地址来指定文件;也就是说,不管声誉好坏,这些地址都将被允许访问。MS_CacheSize指定了关于多少个IP地址应该缓存起来的信息。遭到比较严重的DDOS攻击时,你可以加大这个数,阻止数量更多的重复性的恶意IP地址。

使用ModSpamhaus可能会导致你的网站性能下降,如果你启用它来检查GET等更常使用的HTTP方法,更是如此。为了解决这个问题,你可以安装自己的rbldnsd(DNS守护程序,适合运行基于DNS的阻止列表),并使用ModSpamhaus选项MS_DNS来指定其地址。拥有自己的rbldnsd让你可以使用本地数据库、定期拷贝远程数据库,从而优化性能。

所有上述模块仅仅是数百个Apache扩展模块中的少数几个,代表了旨在改善Apache Web服务器功能的模块。

小知识:APache eXtenSion工具

不是所有的Apache模块都是以预编译程序包的形式出现的。当你遇到不是预编译程序包的模块时,可以借助由CentOS程序包httpd-devel提供的APache eXtenSion(apxs)工具,从源文件来安装它。Apxs通过三种类型的文件:C语言源文件(.c)、对象文件(.o)和库归档文件(.a),创建Apache模块,作为动态共享对象(DSO)。DSO文件通过mod_so模块,在运行过程中装入到Apache。通过运行apachectl -l,核实一下你的Apache是不是安装了mod_so,寻找输出当中的mod_so.c。

关键词:Apache Web服务器

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站