Laravelにはメンテナンスモードがある。
メンテナンスモードでは
- カスタムビューを表示する
- ステータス503(Service unavailable)を返す
メンテナンスモードに移行するには
1 |
$ php artisan down |
メンテナンスモードから復帰するには
1 |
$ php artisan up |
メンテナンスモード中でも特定IPからのアクセスを許可するには
一般からのアクセスは拒絶するのだけど、身内のアクセスだけは許したい場合がある。例えばメンテナンスが完了して公開前にテスターにだけアクセスを許す場合など。
そういった制御はHTTPをフィルタリングすのが役割のミドルウェアで行うのが定石か。サンプルを公開してくれているサイトがあったので参考にさせてもらう。
Laravel 5 メンテナンスモード IP制限
http://www.ajisaba.net/php/laravel5/maintenance.html
以下ざっと実装手順。
許可サイトのIPアドレスを.envに記述する
1 |
MAINTENANCE_IP=192.168.1.10,192.168.1.11 |
ミドルウェアを実装する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class AllowAccessInMaintenanceMode { protected $app; public function __construct(Application $app) { $this->app = $app; } public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $ip = $request->getClientIp(); $allowIp = explode(',', env('MAINTENANCE_IP')); if (!is_array($allowIp) || !in_array($ip, $allowIp)) { throw new HttpException(503); } } return $next($request); } } |