相关疑难解决方法(0)

如何在弹性豆茎上强制使用https?

我似乎无法在弹性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

68
推荐指数
5
解决办法
4万
查看次数

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 设置:

  1. 让环境变量更改保留/var/app/current而不是替换它。
  2. 让环境变量更改运行容器命令。

有关容器命令的 Elastic Beanstalk 文档表示“仅在环境创建和部署期间执行仅领导者容器命令,而每次配置或更新实例时都会执行其他命令和服务器自定义操作。” 这是 Elastic Beanstalk 中的错误吗?

相关问题:EB:在配置更改时触发容器命令/部署脚本

amazon-web-services amazon-elastic-beanstalk

6
推荐指数
1
解决办法
1084
查看次数