pavloniym/nginx-cache 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pavloniym/nginx-cache

最新稳定版本:v1.0.1

Composer 安装命令:

composer require pavloniym/nginx-cache

包简介

nginx cache package for routes

README 文档

README

Laravel-пакет для автоматической генерации конфигурационных файлов кеширования Nginx на основе атрибутов в контроллерах.

Оглавление

  1. Зачем это нужно
  2. Установка
  3. Настройка Nginx
  4. Использование
  5. Типы кеша
  6. Команды
  7. Тестирование
  8. Кастомные типы кеша
  9. Интеграция в CI/CD

Зачем это нужно

Вместо ручного прописывания location блоков для кеширования API-ендпоинтов в конфигах Nginx, пакет сканирует контроллеры и генерирует конфиг автоматически. Вы используете атрибут #[NginxCache] на методе контроллера, а пакет берет на себя формирование корректных правил для Nginx.

Установка

composer require pavloniym/nginx-cache

Опубликуйте конфигурационный файл:

php artisan vendor:publish --tag=config

В файле config/nginx-cache.php укажите путь, куда PHP должен записывать файл для Nginx:

return [
    'path' => '/etc/nginx/conf.d/_cache',      // Директория для конфигов
    'filename' => 'locations.conf',             // Имя выходного файла
];

Настройка Nginx

Для работы кеширования необходимо подготовить инфраструктуру на стороне Nginx.

Глобальные настройки (nginx.conf)

Добавьте настройки зоны кеша и GeoIP в блок http:

http {
    
    # ...
    
    # Add GeoIP2 (for SimpleWithCountryIsoCache)
    geoip2 /var/www/html/storage/app/geoip/geoip.mmdb {
        auto_reload 5m;
        $geoip2_metadata_country_build metadata build_epoch;
        $geoip2_data_country_code default=NL source=$http_x_forwarded_for country iso_code;
        $geoip2_data_country_name country names en;
    }

    # ...

    # Cache options
    proxy_cache_path /var/cache/nginx levels=2 keys_zone=httpCache:1024M inactive=12h max_size=4096M;
    proxy_cache_lock on;
    proxy_cache_methods GET HEAD POST;
    proxy_cache_min_uses 1;
    proxy_ignore_headers Expires Cache-Control;
    proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_cache_revalidate on;
    proxy_cache_background_update on;
}

Настройка виртуального хоста

Подключите сгенерированный файл внутри блока server:

server {
    # ...
    
    set $backend http://127.0.0.1:8080;
    proxy_cache httpCache;

    # Add cache locations config
    include /etc/nginx/conf.d/_cache/locations.conf;

    location / {
        try_files $uri $uri/ @backend;
    }

    location @backend {
        internal;
        proxy_pass $backend$suffix;
    }
    
    # ...
}

Использование

Просто добавьте атрибут к методу вашего контроллера:

use Pavloniym\NginxCache\Attributes\NginxCache;
use Pavloniym\NginxCache\Types\SimpleCache;

class ProductController extends Controller
{
    #[NginxCache(type: SimpleCache::class, duration: 300)]
    public function index()
    {
        return Product::all();
    }
}

Типы кеша

  • SimpleCache: Базовый кеш по URI и телу запроса.
  • SimpleWithCountryIsoCache: Кеш, разделенный по странам (требует GeoIP2).
  • SimpleWithIpCache: Персонализированный кеш по IP адресу.
  • UserCache: Кеш для авторизованных пользователей (учитывает сессии и Bearer токены).
  • WithoutCache: Явное отключение кеширования для метода.

Команды

Просмотр списка всех кешируемых роутов:

php artisan nginx-cache:list

Генерация файла конфигурации:

php artisan nginx-cache:build

Тестирование

Пакет покрыт автотестами на PHPUnit + Orchestra Testbench.

Установка dev-зависимостей:

composer install

Запуск всех тестов:

composer test

Кастомные типы кеша

Вы можете создавать свои правила, наследуя класс NginxCacheType:

namespace App\NginxCache;

use Pavloniym\NginxCache\Contracts\Types\NginxCacheType;

class HeavyCache extends NginxCacheType
{
    public string $key = '$request_uri';
    public string $duration = '3600s';
    public string $responses = '200';
}

Интеграция в CI/CD

Для автоматизации обновления правил добавьте выполнение команды в процесс деплоя:

php artisan nginx-cache:build
nginx -s reload

Требования

  • PHP 8.1+
  • Laravel 9.x / 10.x / 11.x / 12.x
  • Nginx с модулем ngx_http_geoip2_module (для соответствующих типов кеша)

License

MIT

Важно: Пакет только генерирует конфиги. Настройку базовых параметров Nginx (proxy_cache_path, upstream и т.д.) делай вручную в основном конфиге.

统计信息

  • 总下载量: 23
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固