浏览文章

文章信息

Apache2.4限制IP并发 | 从安装拓展apxs到httpd.conf配置 12293

使用 mod_security 在服务器上设置 IP 限制。

首先在服务器上检查 apache 版本。

httpd -v

转到下面的路径

cd /usr/local/src/

使用以下链接下载 mod_limitpconn。我有 apache 版本 2.4.6。根据您的 apache 版本下载文件。

 wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 --no-check-certificate

解压文件

tar -xvf mod_limitipconn-0.24.tar.bz2

去那个文件夹

cd mod_limitipconn-0.24

用apache apxs编译

whereis apxs

我的apxs位置是/usr/bin/apxs

/usr/bin/apxs -c -i mod_limitipconn.c

See any operating system documentation about shared libraries for

more information, such as the ld(1) and ld.so(8) manual pages.

----------------------------------------------------------------------

chmod 644 /usr/lib/apache2/modules/mod_limitipconn.so


记住:/usr/lib/apache2/modules/mod_limitipconn.so 后面需要用到

~~~

如果apxs找不到

解决:

Ubuntu:

apt-get isntall apache2-dev

CentOS:

yum install httpd-devel

~~~

检查apache语法,如果ok就重启apache服务

httpd -t
/etc/init.d/httpd restart

在 httpd.conf 中添加以下几行

vi /usr/local/apache/conf/httpd.conf

 

配置httpd.conf:

#***************配置IP连接数流量限制**************
# 这个命令总是需要
ExtendedStatus On
# 仅当模块编译为 DSO
LoadModule limitipconn_module /usr/lib/apache2/modules/mod_limitipconn.so
<IfModule mod_limitipconn.c>
    # 设置服务器范围内每个 IP 50 个并发连接的限制,
    MaxConnPerIP 50
    
    # -------------动态请求-------------
    <Location />
        # 此部分影响 http://your.server/* 下的所有文件
        MaxConnPerIP 3
        # 从连接限制中免除图像被限制
        # 如果您的网页有很多内嵌图像,就会产生图片的并发请求,所以需要取消图片请求并发限制
        NoIPLimit image/*
        # 某些静态图片是文本类型的,也不限制
        NoIPLimit text/*
    </Location>
    <Location /pub>
         # 此部分影响/pub下的所有请求
        MaxConnPerIP 1
        # 在这种情况下,除audio/mpeg和video*之外的所有MIME类型都免于限制检查
        OnlyIPLimit audio/mpeg video
    </Location>
    # -------------静态文件-------------
    <Directory /www/wwwroot/*/pub>
        # 此部分影响/home/*/pub下的所有文件
        MaxConnPerIP 1
        # 在这种情况下,除audio/mpeg和video*之外的所有MIME类型都免于限制检查
        OnlyIPLimit audio/mpeg video
    </Directory>
</IfModule>

如果一切正常,请检查语法,然后重新启动 apache。

httpd -t

/etc/init.d/httpd restart

/etc/init.d/httpd status

确认域在服务器上工作。您可以从以下文件中选择域并尝试随机访问它。

cat /etc/userdomains.conf

 

笔记:

除非加载了 mod_status 并设置了“ExtendedStatus On”指令,否则此模块将无法运行。

确保使用 easyapache 在服务器上安装了 mod security。


原创