【www.hj8828.com】CentOS下Apache 2.x的安装、优化及安全设置

一旦你优化了Apache的服务器端,就可以开始改进内容分发了。ModPagespeed(

Linux下Apache安装及实例 
http://www.linuxidc.com/Linux/2017-02/140800.htm

为了加快客户端的页面读取速度,我们需要安装配置mod_deflate这个网页压缩模块。该模块已被Apache
2.x内置,不需要重新安装,可直接在/home/apache/conf/httpd.conf里进行配置。
kate /home/apache/conf/httpd.conf
加入以下选项

Ubuntu 16.04
LTS安装Apache2+PHP7.0+MySQL+phpMyAdmin图文详解 
http://www.linuxidc.com/Linux/2017-02/140098.htm

保存后重启apache即可!

为了防止Web服务器被DDoS攻击,我们需要安装mod_evasive这个防DDoS的模块
mod_evasive 1.10.x防DDoS模块的下载与安装

下载地址:

解压后进入解压目录,执行
/home/apache/bin/apxs -cia mod_evasive20.c

编译完成后,/home/apache/modules下会生成一个mod_evasive20.so文件

然后kate /home/apache/conf/httpd.conf

加入以下选项(如果没有的话)

#启用mod_evasive for Apache 2.x防DDoS模块
LoadModule evas

–Apache(httpd) —
PHP Apache下载地址:
解压后进入解压目录,执行: ./configure –prefix=/h…

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

CentOS6.8编译安装Apache2.4.25、MySQL5.7.16、PHP5.6.29 
http://www.linuxidc.com/Linux/2016-12/138993.htm


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

Apache 配置多站点访问及二级域名配置 
http://www.linuxidc.com/Linux/2017-03/141339.htm

./configure –prefix=/home/apache –enable-so –with-mysql=/home/mysql
–enable-track-vars –enable-mods-shared=all –enable-cache
–enable-disk-cache –enable-mem-cache –enable-rewrite
–with-mpm=worker
make
make install

借助ModPagespeed优化内容

Apache启用gzip压缩模块节约网站带宽 
http://www.linuxidc.com/Linux/2017-04/142821.htm

Web服务器软件安装顺序:Mysql –>Apache(httpd) –> PHP
Apache下载地址:

你可以从源文件或通过二进制程序包来安装ModPagespeed。至于CentOS,你可以使用来自ModPagespeed下载页面(
-ivh mod-pagespeed*.rpm来安装它。重启Apache,并运行命令apachectl -t -D
DUMP_MODULES,确保ModPagespeed已安装和装入。在这个命令的输出中,你应该能在所列的模块当中找到pagespeed_module。

Apache2.4.6服务器安装及配置 
http://www.linuxidc.com/Linux/2017-01/140006.htm

</IfModule>

为了防止恶意用户对Apache进行攻击,我们需要安装mod_security这个安全模块

mod_security 1.9.x模块的下载与安装

下载地址:

建议使用1.9.x,因为2.x的配置指令与1.x完全不同,解压后进入解压目录,执行:

/home/apache/bin/apxs -cia mod_security.c

编译完成后,/home/apache/modules下会生成一个mod_security.so文件

然后kate /home/apache/conf/httpd.conf

加入以下选项(如果没有的话)

#启用mod_security这个安全模块
LoadModule security_module modules/mod_security.so
(这一句通常会被自动加入)
<IfModule mod_security.c>
# 打开过滤引擎开关。如果是Off,那么下面这些都不起作用了。
SecFilterEngine On
# 把设置传递给字目录
SecFilterInheritance Off
# 检查url编码
SecFilterCheckURLEncoding On
# 检测内容长度以避免堆溢出攻击
#SecFilterForceByteRange 32 126
#
日志的文件和位置。一定要先建立好目录,否则apache重新启动的时候会报错。
SecAuditLog logs/audit_log
# debug的设置
#SecFilterDebugLog logs/modsec_debug_log
#SecFilterDebugLevel 1
#当匹配chmod,wget等命令的时候,重新定向到一个特殊的页面,让攻击者知难而退
SecFilter chmod redirect:
SecFilter wget redirect:
#检测POST数据,注意,请甚用这个开关,可能会导致一些post页面无法访问。详细的信息,请察看www.modsecurity.org的文档,其中有详细的post编码要求。
#SecFilterScanPOST Off
# 缺省的动作
SecFilterDefaultAction “deny,log,status:406”
# 重新定向用户
#SecFilter xxx redirect:
# 防止操作系统关键词攻击
SecFilter /etc/*passwd
SecFilter /bin/*sh
# 防止double dot攻击
SecFilter “../”
# 防止跨站脚本(CSS)攻击
SecFilter “<( | )*scrīpt”
# Prevent XSS atacks (HTML/Javascrīpt injection)
SecFilter “<(.| )+>”
# 防止sql注入式攻击
SecFilter “delete[[:space:]]+from”
SecFilter “insert[[:space:]]+into”
SecFilter “select.+from”
#重定向exe和asp请求
SecFilterSelective REQUEST_URI “.exe”
“redirect:”
SecFilterSelective REQUEST_URI “.asp”
“redirect:”
#下面是限制了upload.php文件只能用来上传jpeg.bmp和gif的图片
#<Location /upload.php>
#SecFilterInheritance On
#SecFilterSelective POST_PAYLOAD “!image/(jpeg|bmp|gif)”
#</Location>
#伪装服务器标识
SecServerSignature “Microsoft-IIS/6.0”
</IfModule>

改善性能的模块

Apache常用工作模式有两种,区别?
worker模式:1、线程模式 2、占用资源少 3、稳定性略差 4、并发大
prefork模式:1、进程模式 2、占用资源多 3、稳定 4、并发一般
apache默认是prefork,编译时候一般选择worker模式。如果编译时候不指定worker模式,那么就是默认的prefork模式
已经确定了worker模式,如何调优呢?

安装完毕后,Apache并不会关机后自动启动,需要手工进行一些设置:
先将apachectl这个文件复制到/etc/init.d下,并更名为httpd
cp /home/apache/bin/apachectl /etc/init.d/httpd
然后编辑此文件,kate /etc/init.d/httpd
并在#!/bin/sh下加入以下几句
# add for chkconfig
# chkconfig: 2345 70 30
# descrīption: Activate/Deactive Apache Web Server
# processname: httpd
保存后退出。
2345是指apache的运行级别,即在2345这4种模式下都可以运行,234都是文本界面,5就是图形界面X
70是指apache的启动顺序号,如果别的程序的启动顺序号比70小,比如34,65,则需要等这些程序都启动以后,才启动apache。建议将apache的启动顺序排在mysql之后!
30是指系统关闭时,apache的停止顺序号。
最后执行 chkconfig –add httpd
,将apache的自启动文件加到rc.d下的对应目录下,只有这样,Linux才能正确完成开机自启动。