monicahq / laravel-cloudflare
将Cloudflare IP地址添加到Laravel的可信代理。
Requires
- php: ^7.4 || ^8.0
- illuminate/support: ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- guzzlehttp/guzzle: ^6.3 || ^7.0
- larastan/larastan: ^1.0 || ^2.4
- mockery/mockery: ^1.4
- ocramius/package-versions: ^1.5 || ^2.1
- orchestra/testbench: ^6.0 || ^7.0 || ^8.0 || ^9.0
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- phpunit/phpunit: ^9.5 || ^10.0 || ^11.0
- vimeo/psalm: ^4.0 || ^5.6
Suggests
- guzzlehttp/guzzle: Required to get cloudflares ip addresses (^6.5.5|^7.0).
README
将Cloudflare IP地址添加到Laravel的可信代理。
安装
- 使用composer安装包
composer require monicahq/laravel-cloudflare
- 配置中间件
在您的 bootstrap/app.php
文件中替换 TrustProxies
中间件
->withMiddleware(function (Middleware $middleware) { $middleware->replace( \Illuminate\Http\Middleware\TrustProxies::class, \Monicahq\Cloudflare\Http\Middleware\TrustProxies::class ); })
自定义代理回调
您可以通过调用 LaravelCloudflare::getProxiesUsing()
来定义自己的代理回调,以改变 LaravelCloudflare::getProxies()
方法的行为。此方法通常在您的 AppServiceProvider
类的 boot
方法中调用
use Illuminate\Support\ServiceProvider; use Monicahq\Cloudflare\LaravelCloudflare; use Monicahq\Cloudflare\Facades\CloudflareProxies; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. */ public function boot(): void { LaravelCloudflare::getProxiesUsing(fn() => CloudflareProxies::load()); } }
工作原理
中间件使用 Illuminate\Http\Middleware\TrustProxies 作为后端。
当检测到cloudflare ips时,它们被用作可信代理。
刷新缓存
此包检索Cloudflare的IP块,并将它们存储在缓存中。当请求到来时,中间件将从缓存中获取Cloudflare的IP块,并将它们作为可信代理加载。
您需要定期刷新cloudflare缓存,以确保始终有最新的代理。
使用 cloudflare:reload
artisan命令刷新IP块
php artisan cloudflare:reload
建议:将重载命令添加到计划中
在您的 routes/console.php
文件中添加一个计划来刷新缓存,例如
use Illuminate\Support\Facades\Schedule; Schedule::command('cloudflare:reload')->daily();
查看当前的Cloudflare IP块
您可以使用 cloudflare:view
artisan命令查看缓存的IP块
php artisan cloudflare:view
选项:发布包配置文件
如果您想,您可以发布包配置文件到 config/laravelcloudflare.php
php artisan vendor:publish --provider="Monicahq\Cloudflare\TrustedProxyServiceProvider"
此文件包含一些配置,但通常您不需要更改它们。
为您包运行测试
在为您的包运行测试时,您通常不需要获取Cloudflare的代理地址。您可以通过在 .env
或 phpunit.xml
文件中添加以下环境变量来禁用Laravel Cloudflare中间件
LARAVEL_CLOUDFLARE_ENABLED=false
兼容性
引用
此包受到了 lukasz-adamski/laravel-cloudflare 的启发,并从 ogunkarakus/laravel-cloudflare 分支而来。
许可证
作者: Alexis Saettler
该项目是 MonicaHQ 的一部分。
版权 © 2019–2024。
在MIT许可证下发布。 查看许可证。