我似乎无法在弹性beanstalk的免费使用层上强制使用https.
我在如何强制https on amazon elastic beanstalk上尝试了以下建议而不会失败健康检查
使用此Apache重写规则
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/status$
RewriteCond %{REQUEST_URI} !^/version$
RewriteCond %{REQUEST_URI} !^/_hostmanager/
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,http请求不会像我想的那样被重定向到https.相反,http页面正常加载.我也尝试使用X-Forwarded-Port标头,结果相同.
我也尝试了以下重写规则
RewriteCond %{SERVER_PORT} 80
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)
此规则会导致重定向循环.因此,似乎apache重写规则不会获取Elastic Load Balancer标头X-Forwarded-Port和X-Forwarded-Proto,但重定向循环也不是我想要的.
请帮忙.我是AWS,Elastic Beanstalk的新手,并且不熟悉Apache规则.我不太确定从哪里开始.谢谢.
apache mod-rewrite https amazon-web-services amazon-elastic-beanstalk
在 Elastic Beanstalk 上,使用基于 AWS Linux 2 的环境时,更新环境的环境属性(即环境变量)会导致所有生成的文件被删除。作为此更新的一部分,它也不会运行container_commands。
例如,我有一个 Django 项目,其中包含collectstatic容器命令:
05_collectstatic:
command: |
source $PYTHONPATH/activate
python manage.py collectstatic --noinput --ignore *.scss
Run Code Online (Sandbox Code Playgroud)
这会将静态文件收集到一个称为staticfiles部署一部分的文件夹中。但是当我更新环境变量时,staticfiles它被删除了。这会导致应用程序上的所有静态文件被破坏,直到我重新部署为止,这是极其不可取的。
在基于 AWS Linux 1 的环境中不会发生此行为。差异似乎在于,基于 AWS Linux 2 的环境/var/app/current在环境变量更改期间会替换该文件夹,而基于 AWS Linux 1 的环境则不会执行此操作。
我该如何解决?
我可以通过监视来验证在环境变量更改期间容器命令没有运行/var/log/cfn-init.log;没有新条目添加到此日志中。
滚动更新类型“禁用”和“不可变”都会发生这种情况。
即使我将环境命令转换为平台钩子,也会发生这种情况,尽管更新环境属性时钩子被列为正在运行。
在我看来,有两种潜在的解决方案,但我不知道其中任何一个的 Elastic Beanstalk 设置:
/var/app/current而不是替换它。有关容器命令的 Elastic Beanstalk 文档表示“仅在环境创建和部署期间执行仅领导者容器命令,而每次配置或更新实例时都会执行其他命令和服务器自定义操作。” 这是 Elastic Beanstalk 中的错误吗?
相关问题:EB:在配置更改时触发容器命令/部署脚本