网站小百科安全,防刷限流 limit_req 模板合集

在当今的互联网环境中,网站面临着各种安全威胁,其中最常见的就是恶意访问和刷流量,为了保护网站的正常运营,防止恶意攻击者通过大量请求来消耗服务器资源,许多网站管理员会选择使用“限制请求”(limit_req)技术,这种技术可以有效地控制每秒的请求数量,从而保护服务器免受过度压力,本文将介绍几种常用的“限制请求”模板,并解释它们的工作原理。

Apache HTTP Server LimitRequest 模块

Apache HTTP Server LimitRequest 是一个用于限制请求频率的模块,它可以被集成到任何支持 Apache HTTP Server 的服务器中,该模块允许管理员设置一个最大并发连接数,超过这个数量的请求将被拒绝。

安装步骤:

  1. 下载 Apache HTTP Server LimitRequest 模块。
  2. 将下载的文件上传到你的 Apache HTTP Server 的 mods-available 目录下。
  3. 重启 Apache HTTP Server 以应用新的配置。

配置示例:

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Require all granted
        LimitRequests 1000
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在这个示例中,我们设置了每个虚拟主机的最大并发连接数为 1000,如果超过这个数量,请求将被拒绝。

Nginx LimitRequest 模块

Nginx LimitRequest 是一个类似于 Apache HTTP Server LimitRequest 的模块,它允许管理员设置一个最大并发连接数,超过这个数量的请求将被拒绝。

安装步骤:

  1. 下载 Nginx LimitRequest 模块。
  2. 将下载的文件上传到你的 Nginx 的 conf.d 目录下。
  3. 重启 Nginx 以应用新的配置。

配置示例:

http {
    server {
        listen 80;
        server_name example.com;
        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Content-Type-Options nosniff;
            proxy_set_header X-Frame-Options deny;
            proxy_cache_bypass $http_upgrade;
        }
        limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
        add_header X-RateLimit-Remaining "1";
        add_header X-RateLimit-Reset "@15m";
        add_header X-RateLimit-Max "10";
        add_header X-RateLimit-Unit "1";
        add_header X-RateLimit-Expire "@15m";
        add_header X-RateLimit-Refresh "@15m";
        add_header X-RateLimit-Strict "no";
        add_header X-RateLimit-Allow "*";
    }
}

在这个示例中,我们设置了每个虚拟主机的最大并发连接数为 10 个请求,如果超过这个数量,请求将被拒绝,我们还设置了请求的速率限制、重置时间、最大值、单位、过期时间和刷新时间。

Memcached 缓存策略

除了直接限制请求之外,还可以利用 Memcached 缓存策略来减少对后端服务的请求压力,Memcached 是一个高性能的内存数据存储系统,它可以缓存大量的数据,从而减少对数据库的访问次数。

安装步骤:

  1. 下载 Memcached 客户端库。
  2. 将下载的文件添加到你的 PHP 项目的 extensions 目录下。
  3. 重启 PHP 以应用新的扩展。

配置示例:

<?php
require 'vendor/autoload.php';
use Memcached\Client;
use Memcached\Exception\ConnectionException;
$memcached = new Client();
$memcached->connect('localhost', 11211);
$memcached->set('key', 'value');
$memcached->get('key');

在这个示例中,我们首先创建了一个 Memcached 客户端对象,然后连接到本地的 Memcached 服务器,我们使用 set 方法将数据存储到 Memcached 中,最后使用 get 方法获取数据。

 
maolai
  • 本文由 maolai 发表于 2024年6月29日 19:57:09
  • 转载请务必保留本文链接:/603.html

发表评论