设为首页 加入收藏

TOP

通向架构师的道路(第三天)之 apache 性能调优(五)
2018-01-30 12:42:08 】 浏览:423
Tags:通向 架构 师的 道路 第三 apache 性能
mats docx pptx xlsx doc xls ppt txt

重启Apache服务即可。

3.5 防止DDOS攻击

DDOS攻击即采用自动点击机器人或者连续点击工具不断的刷新某一个网址或者网页上的按钮,造成网站在一时间收到大量的HTTP请求,进而阻塞网站正常的HTTP通道甚至造成网站瘫痪。

 

为了防止这一形式的攻击,我们一般把在一个按钮或者是一个请求在一秒内连续执行如:100次,可以认为是一种攻击(比如说你打开一个网页,点一下提交按钮,然后按住F5键不松开)。

在Linux下的Apache HttpServer安装后会提供一个mod_evasive20的模块,用于防止这一形式的攻击,它的做法是:

如果认为是一个DDOS攻击,它的防范手段采用如下两种形势:

  • 把这个请求相关联的IP,封锁30分钟
  • 直接把相关的IP踢入黑名单,让其永不翻身

设置:

在你的Apache的httpd.conf文件中的最后一行“LoadModule”加入如下这句:

LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so

然后加入下面这几行

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 15
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 36000
DOSEmailNotify 网站超级管理员@xxx.com
DOSLogDir "logs/mod_evasive"
</IfModule>
  • DOSSiteCount 每个站点被判断为dos攻击的读取部件(object)的个数核心参数解释:
  • DOSHashTableSize3097 记录黑名单的尺寸
  • DOSPageCount 每个页面被判断为dos攻击的读取次数
  • DOSPageInterval 读取页面间隔秒
  • DOSSiteInterval 读取站点间隔秒
  • DOSBlockingPeriod 被封时间间隔秒

注意:

上述设置是针对Linux/Unix下的Apache Server,相关的Windows下的Apache见如下设置:

为Windows下的Apache加载mod_evasive模块

1. 下载附件中的压缩包,解压并拷贝mod_dosevasive22.dll到Apache安装目录下的modules目录(当然也可以是其他目录,需要自己修改路径)。

2. 修改Apache的配置文件http.conf。

添加以下内容

LoadModule dosevasive22_module modules/mod_dosevasive22.dll
DOSHashTableSize 3097
DOSPageCount 3
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10

3.6 Apache中设置URL含中文附件的下载/打开的方法(仅限Linux系统下)

这个话题很有趣,起因是我们在工程中碰到了客户这样的一个需求:

<a href=”xxx.xxx.xx/xx/xxx/轮胎损坏情况2007-05-05.jpg”>损坏部件</a>

看看好像没啥问题,一点这个超链接,因该是在IE中打开一个叫” 轮胎损坏情况2007-05-05.jpg”,嘿嘿,大家自己动手放一个带有中文名的这样的一个图片,看看能否被解析,解析不了。

所以我们就说,真奇怪,我们上传图片都是上传时的图片名经上传组件解析过以后变成一个UUID或者是GUID一类的文件名如:gb19070122abcxd.jpg这样一种英文加数字组合的文件名,这样的文件名,Apache当然是可以解析的,客户坚持一定我上传的图片是中文名(连中文描述都不行),因为,客户说:我们是中国人,当然用中文图片名。。。

没办法,找了半天,找到一篇日文的教程,还好还好,N年前学过一点点日语,照着教程把它啃下来了。

这是一个日本人写的关于在Apache中支持以亚州文字命名文件名的一个“补丁”,叫“mod_encoding”。

相关配置:

1. 下载完后是一个这样的压缩包:mod_encoding-20021209.tar.gz

2.  解压后使用:

configure
make
make install

原因很明显,是regex.h未包含进来,解决办法也很简单:在make这一行时,编译出错,报“make: *** [mod_encoding.so] Error 1”这样的错

  • 用vi打开mod_encoding.c,
  • 在#include <httpd.h>那一段的前面加上如下一行:

#include <regex.h>然后:

重新make再make install 搞定,CALL!!!

3. 编译后得到一个:mod_encoding.so的文件,然后在httpd.conf文件中加入下面这几行:

LoadModule encoding_module modules/mod_encoding.so
Header add MS-Author-Via "DAV"

<IfModule mod_encoding.c>
  EncodingEngine    on
  NormalizeUsername on
  SetServerEncoding GBK
  DefaultClientEncoding UTF-8 GBK GB2312
  AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
  AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
  AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312

</IfModule>

4.  重启Apache,搞定,在apache中我们的url可以是中文名的附件了。

3.7 不可忽视的keepalive选项

在Apache 服务器中,KeepAlive是一个布尔值,On 代表打开,Off 代表关闭,这个指令在其他众多的 HTTPD 服务器中都是存在的。

KeepAlive 配置指令决定当处理完用户发起的 HTTP 请求后是否立即关闭 TCP 连接,如果 KeepAlive 设置为On,那么用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这一次 TCP 连接中完成,而不用重复建立新的 TCP 连接和关闭TCP 连接,可以提高用户访问速度。

那么我们考虑3种情况:

1.用户浏览一个网页时,除了网页本身外,还引用了多个java script 文件,多个css 文件,多个图片文件,并且这些文件都在同一个HTTP 服务器上。

2.用户浏览一个网页时,除了网页本

首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇通向架构师的道路(第一天)之 Ap.. 下一篇通向架构师的道路(第二天)之 ap..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目