peppeocchi / laravel-elb-middleware
Laravel 用于 Elastic Beanstalk 的中间件
v3.0
2019-07-05 07:43 UTC
Requires
- symfony/http-foundation: >=3.2
This package is auto-updated.
Last update: 2024-09-06 00:35:50 UTC
README
这个中间件将确保您的 Laravel 应用在 Elastic Beanstalk 上使用负载均衡器运行时,能够正确识别 安全 请求。 注意:请确保您的 Web 服务器不可公开访问,并且负载均衡器只有访问权限(您可以通过 AWS 安全组来管理)。
还有一个 gist 做了完全相同的事情。
安装
您可以通过 Composer 安装此中间件
composer require peppeocchi/laravel-elb-middleware
使用方法
使用中间件的最简单方法是将其添加到 app/Http/Kernel.php
中的全局中间件
... class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \GO\ElasticBeanstalkHttps::class ]; ...
但您也可以将其添加到中间件组或直接添加到您的控制器中。
简单来说
在 Elastic Beanstalk(带有负载均衡器)上,所有请求都被“代理”到端口 80。负载均衡器会将 x-forwarded-*
头添加到请求中。
Laravel 的 Request
继承自 Symfony\Component\HttpFoundation\Request
,因此它已经支持 x-forwarded-*
头,但它需要配置为查看这些头,否则您将得到关于请求的错误信息(例如,$request->isSecure()
总是返回 false)。
Amazon ELB 没有静态 IP 或范围进行目标定位,因此您需要信任所有代理。当然,您需要确保您的 Web 服务器只对 负载均衡器 响应。