Laravel Sessions数据库表填充了user_agent ELB-HealthChecker / 2.0运行状况检查

时间:2017-09-25 18:07:20

标签: mysql laravel session amazon-ec2 user-agent

我正准备将Laravel 5.5生产环境运行在Elastic Load balancer(ELB)后面的多个AWS EC2实例上。所有共享数据(如images,css,js)都存储在S3上,日志流式传输到CloudWatch,数据库位于RDS上。会话和缓存已配置为使用数据库。

除了我看到会话表填满了使用user_agent“ELB-HealthChecker / 2.0”的数千个ELB运行状况检查之外,这一切都很有效。 Laravel / PHP显然将每个运行状况检查视为新用户,并生成一个新会话,每个实例每30秒一个。这可能很快失控,不可持续。

所以我的问题是这样的...... Laravel中是否有一种方法忽略或拒绝来自特定user_agents的请求,因此它们不会启动会话?我可以写一个shell脚本来定期删除记录,但这似乎是一个不必要的黑客。

2 个答案:

答案 0 :(得分:2)

我认为最简单的解决方案是将ELB指向特定的健康检查ping路由,然后禁用该路由的会话中间件mentioned here

答案 1 :(得分:1)

一个简单的解决方案(在你的路线文件中):

    Route::get('/healthcheck', function() {
        config()->set('session.driver', 'array');
        return response('Hello World', 200)
           ->header('Content-Type', 'text/plain');
    });