poing / laravel-elb
适用于 AWS Elastic Beanstalk(ELB)上运行的 Laravel 应用程序的 HTTPS 必备元素
Requires
Suggests
- czproject/git-php: Provides branch information for the sample view.
- ocramius/package-versions: Provides package version for the sample view.
- dev-master
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.1.22
- v0.1.21
- v0.1.20
- v0.1.19
- v0.1.18
- v0.1.17
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- 0.1.2.x-dev
- v0.1.2
- 0.1.1.x-dev
- v0.1.1
- 0.1.0.x-dev
- v0.1.0
- v0.0.16
- v0.0.15
- v0.0.14
- v0.0.13
- v0.0.12
- v0.0.11
- v0.0.10
- v0.0.9
- v0.0.8
- v0.0.7
- v0.0.6
- v0.0.5
- v0.0.4
- v0.0.3
- v0.0.2
- v0.0.1
This package is auto-updated.
Last update: 2024-09-25 01:17:10 UTC
README
本软件包为 Laravel 应用程序在 AWS Elastic Beanstalk(ELB)上运行提供必要的 HTTPS 元素。
它提供以下功能
- 部署环境的配置文件
.ebextensions
- 将文档根目录设置为
/public
- 示例 展示如何读取环境配置变量
- 将
.env.aws
复制到.env
- 运行
artisan
命令 - 如何 安装和运行
npm
命令
- 将文档根目录设置为
- 为 MariaDB 或 Aurora 提供的
defaultStringLength()
- HTTP 到 HTTPS 重定向的中间件
- 包括配置 HTTPS 重定向异常的能力
- 用于识别 安全 请求的中间件
带有 HTTPS 的 Elastic Beanstalk 快速入门指南
以下是 分步 指令,用于将新的 Laravel 应用程序部署到 AWS Elastic Beanstalk。
安装
您可以使用 composer 安装此软件包。
# With the Suggested Packages composer require czproject/git-php ocramius/package-versions poing/laravel-elb # Without the Suggested Packages composer require poing/laravel-elb
命令
安装此软件包后,以下 artisan
命令将在您的 Laravel 应用程序中可用
elb:install
: 将.ebextensions
目录和.env.aws
添加到 Laravel 应用程序。elb:publish
: 将config/laravel-elb.php
添加到 Laravel 应用程序,以允许自定义 HTTPS 重定向。- 这将 禁用 软件包中包含的 示例
route
和view
。
- 这将 禁用 软件包中包含的 示例
Elastic Beanstalk 配置文件
本软件包提供 Elastic Beanstalk 配置文件 (.ebextensions),以配置环境、自定义 AWS 资源和执行 Laravel 任务。 例如运行 artisan
命令。
.ebextensions/10-document-root.config
.ebextensions/20-app-key-test.config
.ebextensions/30-env-file.config
.ebextensions/40-artisan.config
.ebextensions/50-node-npm-gulp.config
这些提供了将 Laravel 部署到 Elastic Beanstalk 的 基本 要求。文件按处理顺序命名,以便您可以在其中插入文件。
如果您认为缺少某些内容,或者某些内容可以做得更好,请随时提交 pull request。
除 HTTP 到 HTTPS 重定向外,请参阅下一节以获取解释。
MariaDB 或 Aurora
因为我 经常 使用 Aurora 或 MarieDB,而不是 MySQL,所以我添加了对非 MySQL 数据库的 修复。
Schema::defaultStringLength(191);
Laravel 5.4 对默认数据库字符集进行了更改,现在为 utf8mb4,它包括存储表情符号的支持。这仅影响新应用程序,并且只要您运行 MySQL v5.7.7 或更高版本,您就不需要做任何事情。
虽然 AWS 提供了更高版本的 MySQL。Aurora(《MySQL 兼容》),不 支持 尚未 增加的字符串长度。
HTTP 到 HTTPS 重定向
本软件包中包含的中间件 消除 使用 Apache RewriteEngine
方法通过 .ebextensions
处理 HTTP 到 HTTPS 重定向的必要性。同时允许 某些 流量 不 被重定向,例如 Elastic Beanstalk HealthChecker。
以下 任何 条件下不会发生重定向
User-Agent
是 Elastic Beanstalk HealthChecker- 应用程序环境
APP_ENV
设置为local
URI
与exclude
配置设置匹配
它提供了与AWS文档中推荐的https-redirect
相同的功能,并允许轻松排除自定义路径。
您可以选择使用.ebextensions
方法,它不应影响此中间件。
这个中间件是在尝试使用
.ebextensions
方法排除多个条件时产生的挫折的结果。使用Laravel处理HTTP到HTTPS的重定向提供了更多的灵活性,减少了烦恼。我正在与一个无法使用HTTPS从第三方域名获取内容的应用程序一起工作。
- 此包不会阻止HTTPS访问。
- 它不会将HTTPS重定向到HTTP。
- 它仅允许对指定的
URI
路径进行HTTP访问。
基本用法
默认情况下,此包包含一个示例 视图
,并允许对以/unsecure
为基的URI
进行HTTP访问。
// Green = HTTP Allowed, Red = Redirected to HTTPS + http://{domain.tld}/unsecure + http://{domain.tld}/unsecure/your/web/route - http://{domain.tld}/ - http://{domain.tld}/other
配置
要使用自己的配置,运行elb:publish
将config/laravel-elb.php
安装到您的Laravel应用程序中。
php artisan elb:publish
这将禁用包中包含的示例
视图
。
排除URI路径
exclude
:一个数组,包含那些不会被重定向到HTTPS的URI
路径。- 空数组将重定向所有HTTP到HTTPS。
'exclude' => [ 'alpha', 'bravo/charlie', ],
行为
// Green = HTTP Allowed, Red = Redirected to HTTPS + http://{domain.tld}/alpha + http://{domain.tld}/alpha/any/path - http://{domain.tld}/bravo + http://{domain.tld}/bravo/charlie + http://{domain.tld}/bravo/charlie/any/path - http://{domain.tld}/bravo/any
严格模式
strict
:布尔设置,将限制路径仅限于在exclude
设置中指定的那些。
'exclude' => [ 'alpha', 'bravo/charlie', ],
'strict' => true,
行为
// Green = HTTP Allowed, Red = Redirected to HTTPS + http://{domain.tld}/alpha - http://{domain.tld}/alpha/any/path - http://{domain.tld}/bravo + http://{domain.tld}/bravo/charlie - http://{domain.tld}/bravo/charlie/any/path - http://{domain.tld}/bravo/any
识别安全请求
AWS Elastic Beanstalk环境使用负载均衡器来服务HTTPS请求,而Laravel应用程序实际上运行在仅支持HTTP的AWS Elastic Beanstalk环境中。
这可能导致Laravel应用程序将HTTP表示为返回URL信息的辅助方法,因为Laravel应用程序并不知道负载均衡器。
不正确的响应
// https://domain.tld url()->current(); // Returns: 'http://domain.tld'
此包使用peppeocchi/laravel-elb-middleware
来简化在AWS Elastic Beanstalk上使用HTTPS的Laravel应用程序。确保您的Laravel应用程序在带有负载均衡器的Elastic Beanstalk上运行时将正确识别安全请求。允许返回URL信息的辅助方法表示正确的协议scheme。
正确的响应
// https://domain.tld url()->current(); // Returns: 'https://domain.tld'
此中间件基于gist,由Giuseppe Occhipinti创建,执行完全相同的功能。