我在elastic beanstalk上使用django进行开发,我想对apache配置做两个更改:
1.将www.domain.com重定向到domain.com
2.将http://domain.com重定向到https://domain.com
有人知道如何在弹性豆茎中添加重写吗?
如果您不关心是否将www.example.com
转到example.com
,可以使用DNS中的CNAME来完成。如果需要重定向,可以将其添加到下面的Apache配置中。这个答案的主要要点是详细说明如何在Elastic Beanstalk上修改Apache配置(因为正确地执行这一操作并不十分直接)。
此答案假设您已经在load balancer安全组中启用了https,向load balancer添加了SSL证书,向load balancer转发的端口添加了443,并将您的域名指向具有路由53(或等效DNS服务)的Elastic Beanstalk环境。
大多数基于AWS Linux Version2的平台都可以选择Apache作为代理主机。这可以通过转到“配置”>“软件”>“容器选项”并将“代理服务器”设置为“Apache”来完成。
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</If>
您所需要做的就是在项目的.ebextensions
目录中的.config
文件中添加以下内容:
files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000644"
owner: root
group: root
content: |
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</If>
这是适度直接向前的弹性豆茎外。通常添加如下所示的Apache重写规则:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
或者,如果在负载均衡器后面,就像我们在这里一样:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
>
使用Cloudfront:有些人建议使用Elastic Beanstalk前面的非缓存Cloudfront设置来执行HTTP到HTTPS的重定向。这增加了一个不太合适的全新服务(因此增加了复杂性)(Cloudfront是一个CDN;它不是在固有的动态内容上强制HTTPS的合适工具)。Apache config是这个问题的正常解决方案,Elastic Beanstalk使用Apache,所以我们应该这样做。
SSH进入服务器和...:这与弹性豆茎完全相反,有很多问题。autoscaling创建的任何新实例都不会有修改后的配置。任何克隆的环境都不具备该配置。一组合理的环境更改的任何数量都将消除配置。这真是个坏主意。
用一个新文件覆盖Apache配置:这进入了解决方案的正确领域,但如果Electric Beanstalk改变了服务器设置的各个方面(它们很可能会这样做),则会给您带来一场维护噩梦。还可以在下一项中看到问题。
假设我在Wordpress中创建了一个站点,它运行在Elastic Beanstalk上。现在,在运行的应用程序上,我将创建帖子/页面,上传图像等。也就是说,数据库中的一些数据、视频、文件和记录将被添加到运行的应用程序中。 从我在AWS控制台中看到的情况来看,我可以部署一个应用程序的不同版本--但是根据上面的场景,如果我部署了一个新版本,我会不会丢失直接上传到正在运行的应用程序中的所有文件(即文件
我想我应该做的是,为“website.com”创建一个SSL证书,并将该SSL证书应用到AWS EB负载均衡器。然后,我需要为“website.com”创建一个子域,将流量重定向到“something.elasticbeanstalk.com”。客户端应用程序连接到“website.com”的子域,该子域现在是HTTPS,并重定向到“something.elsastic.beanstalk.com
我使用WindowsPowerShell创建了一个弹性Beanstalk环境,并遵循以下部署文档将Django应用程序部署到弹性Beanstalk 我完成了以下步骤:使用Django的Python虚拟环境, 创建了django项目, 创建IAM用户我获得了访问密钥ID和机密访问密钥ID 失败此步骤环境并部署您的Django应用程序 当我尝试it询问访问密钥、秘密访问密钥和区域aws应用程序自动生成
配置验证异常:AWS Elastic Beanstatk无法与Amazon EC2通信以确定是否为Elastic Load均衡创建自定义安全组。 在创建AWS Elastic Beanstalk应用程序时,我在尝试继续“查看和启动”时遇到了这个错误。我是新手。请帮忙。
有人知道是否有可能将现有的AWS弹性豆茎环境更改为应用程序负载平衡器(而不是经典的负载平衡器)。 据我所知,只有应用程序ELB可以被AWS WAF和DDOS“屏蔽”保护,所以任何现有的EB应用程序都不能利用这些特性,因为他们有经典的ELB。
我是AWS的新手,这个问题似乎很基本。然而,我需要看看我是否能找到解决方案。 我首先创建并启动了一个 EC2 实例,然后创建了一个弹性 Beanstalk 实例,并在该实例上部署了一个示例应用程序。默认情况下,弹性 Beanstalk 会将“默认环境”附加到此实例,我无法将其更改为我的 EC2 实例。如何将我的 EC2 实例(我之前创建的实例)附加到此弹性豆茎实例?我正在使用亚马逊免费套餐来学习。