PHPackages                             zoolok/laravel-ip-blocker - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. zoolok/laravel-ip-blocker

ActiveLibrary

zoolok/laravel-ip-blocker
=========================

Laravel package for blocking suspicious IP addresses (anti-spam/anti-scanner). Supports nginx and Apache log parsing.

00PHP

Since Jul 30Pushed todayCompare

[ Source](https://github.com/zoolok/laravel-ip-blocker)[ Packagist](https://packagist.org/packages/zoolok/laravel-ip-blocker)[ RSS](/packages/zoolok-laravel-ip-blocker/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel IP Blocker
==================

[](#laravel-ip-blocker)

[![Latest Version](https://camo.githubusercontent.com/3c9361873814361568638e09a003e6b02bac969ccd86f74239c2f57b09882620/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7a6f6f6c6f6b2f6c61726176656c2d69702d626c6f636b65722e737667)](https://packagist.org/packages/zoolok/laravel-ip-blocker)[![PHP Version](https://camo.githubusercontent.com/ad032adc056e03721097aadd392fe124ca5388dbd2e6c589907c62b0811811e3/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7a6f6f6c6f6b2f6c61726176656c2d69702d626c6f636b65722e737667)](https://php.net)[![Laravel Version](https://camo.githubusercontent.com/05a09294c4aa3500ff470f37e4263084093cdb3f7ed75b66a91f70d8e17f2573/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302d2d31332d7265642e737667)](https://laravel.com)

Блокировка подозрительных IP-адресов для Laravel. Поддерживает nginx и Apache.

Возможности
-----------

[](#возможности)

- ✅ **Middleware** — отслеживает 404+ ответы, проверяет блокировку, возвращает 403
- ✅ **Парсинг логов** — читает access.log (nginx combined, Apache common/combined)
- ✅ **Автоопределение формата** — определяет nginx или Apache по первой строке файла
- ✅ **Автоматическая блокировка** — анализирует подозрительную активность и блокирует IP
- ✅ **Генерация deny-конфига** — создаёт nginx deny или Apache Require not ip конфигурацию
- ✅ **Ежедневный отчёт** — email-рассылка со статистикой блокировок
- ✅ **MoonShine** — опциональный админ-ресурс для просмотра блокировок
- ✅ **Инкрементальный парсинг** — запоминает позицию в логе для последующих проходов

Требования
----------

[](#требования)

- PHP ^8.1
- Laravel ^10.0|^11.0|^12.0|^13.0
- nginx или Apache (для генерации deny-конфигов)

Установка
---------

[](#установка)

```
composer require zoolok/laravel-ip-blocker
```

Публикация конфига и миграций (опционально):

```
php artisan vendor:publish --tag=ip-blocker-config
php artisan vendor:publish --tag=ip-blocker-migrations
php artisan migrate
```

Быстрый старт
-------------

[](#быстрый-старт)

### 1. Подключите Middleware

[](#1-подключите-middleware)

В `bootstrap/app.php` (Laravel 11+) или `Http/Kernel.php`:

```
// Глобально — на все запросы
->withMiddleware(function (Middleware $middleware) {
    $middleware->append(\Zoolok\IpBlocker\Http\Middleware\TrackSuspiciousIps::class);
})

// Или на группу роутов
Route::middleware('suspicious-ip')->group(function () {
    // ...
});
```

### 2. Настройте конфиг

[](#2-настройте-конфиг)

```
IP_BLOCKER_LOG_PATH=/var/log/nginx/access.log
IP_BLOCKER_LOG_FORMAT=auto
IP_BLOCKER_SERVER_TYPE=nginx
IP_BLOCKER_DENY_PATH=/etc/nginx/conf.d/blocked-ips.conf
IP_BLOCKER_RELOAD_CMD="nginx -s reload"
```

### 3. Запустите парсинг логов

[](#3-запустите-парсинг-логов)

```
php artisan ip:parse-log
```

Опции:

- `--path` — путь к лог-файлу (переопределяет конфиг)
- `--format` — формат (auto, nginx-combined, apache-common, apache-combined)
- `--dry-run` — только вывод, без сохранения в БД
- `--from-beginning` — парсить с начала файла (игнорировать сохранённую позицию)

### 4. Заблокируйте подозрительные IP

[](#4-заблокируйте-подозрительные-ip)

```
php artisan ip:block
```

Опции:

- `--ip` — заблокировать конкретный IP
- `--reason` — причина блокировки
- `--dry-run` — показать, кто будет заблокирован, без блокировки
- `--force` — пропустить подтверждение
- `--no-nginx` — не генерировать deny-конфиг

Поддерживаемые форматы логов
----------------------------

[](#поддерживаемые-форматы-логов)

ФорматКонфигПримерnginx combined`nginx-combined``192.168.1.1 - - [10/Jul/2026:13:55:36 +0000] "GET /admin HTTP/1.1" 404 123 "-" "curl/7.68.0"`Apache common`apache-common``192.168.1.1 - - [10/Jul/2026:13:55:36 +0000] "GET /admin HTTP/1.1" 404 123`Apache combined`apache-combined``192.168.1.1 - - [10/Jul/2026:13:55:36 +0000] "GET /admin HTTP/1.1" 404 123 "-" "curl/7.68.0"`Автоопределение`auto`Пробует nginx-combined → apache-combined → apache-commonПеременные окружения
--------------------

[](#переменные-окружения)

ПеременнаяПо умолчаниюОписание`IP_BLOCKER_LOG_PATH``/var/log/nginx/access.log`Путь к лог-файлу`IP_BLOCKER_LOG_FORMAT``auto`Формат лога`IP_BLOCKER_LOG_LEVEL``debug`Уровень логирования`IP_BLOCKER_ANALYSIS_WINDOW``5`Окно анализа (минуты)`IP_BLOCKER_MAX_404``10`Порог 404 для блокировки`IP_BLOCKER_MAX_REQUESTS``100`Порог запросов для блокировки`IP_BLOCKER_MAX_UNIQUE_URLS``20`Порог уникальных URL`IP_BLOCKER_BLOCK_DURATION``60`Длительность блокировки (минуты)`IP_BLOCKER_SERVER_TYPE``nginx`Тип веб-сервера (nginx/apache)`IP_BLOCKER_DENY_PATH``/etc/nginx/conf.d/blocked-ips.conf`Путь для deny-конфига`IP_BLOCKER_RELOAD_CMD``nginx -s reload`Команда перезагрузки сервера`IP_BLOCKER_REPORT_EMAIL`—Email для отчётов`IP_BLOCKER_MOONSHINE_ENABLED``false`Включить MoonShine-ресурс`IP_BLOCKER_RETENTION_DAYS``30`Дней хранить записиТестирование
------------

[](#тестирование)

```
composer test
```

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

20

—

LowBetter than 12% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/3beb55870f94b984e43f7d17c9c3636e8bd57376a67781f165326f1d437ea40d?d=identicon)[zoolok](/maintainers/zoolok)

### Embed Badge

![Health badge](/badges/zoolok-laravel-ip-blocker/health.svg)

```
[![Health](https://phpackages.com/badges/zoolok-laravel-ip-blocker/health.svg)](https://phpackages.com/packages/zoolok-laravel-ip-blocker)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
