AWS Beanstalk将整个应用程序从httpredirect到https

我一直试图弄清楚这一点,没有任何运气。 我相信你们都知道,aws负载均衡器通过端口80将所有https请求转发到ec2实例上。我需要以某种方式将所有http请求redirect到https。

我到目前为止收集的是你需要以redirect规则修改ec2实例,然后将实例保存为新的AMI并将beanstalk指向新的AMI。 那么其余的似乎还不清楚,我不是服务器专家,所以请裸露在我身边。

我发现下面的重写规则,但不幸的是我不知道该怎么办。

RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !=https RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] 

我ssh'd到我的EC2实例,并去/etc/httpd/这就像我做到了。 我完全失去了我想从那里做的事情。

  1. 我是否修改文件或创build新文件?
  2. 如果我需要修改或创build一个新文件,它将会在哪里,或者我会怎么称呼它,它会在哪里?
  3. 有人可以提供文件的确切内容
  4. 一旦我创build/修改这个文件,接下来我该做什么? 我只是去ec2页面,点击我的实例旁边的checkbox,点击操作,最后创build图像?

如果是这样,这是什么意思? 我不知道我想在这里设置什么设置。 在这里输入图像说明

最后,我假设我只是在我的beanstalk仪表板中进行configuration,并将我的beanstalk env指向我的新AMI并重新启动服务器。 这听起来正确吗?

如果有人知道如何做到这一点,或详细描述过程的网站,我会appriciate它。

我想指出,我在tomcat上使用Java应用程序。 我不确定自定义AMI是否会影响扩大服务器大小。

非常感谢。

所以你需要做一些事情

  1. 在您的负载均衡器中,定义了两个侦听器,即端口80和端口443
  2. 在ec2实例中,在/etc/httpd/conf.d/elasticbeanstalk.conf – 将您的重写规则添加到虚拟主机部分
  3. 一旦完成,当这个工作,你可能想要创build一个AMI图像,所以这些设置坚持在一个AMI图像,您可以稍后使用创build额外的实例

虽然这不是您要求的,但我们通过CloudFront执行此操作。 它比您提出的要容易得多,您还可以获得CloudFront CDN的所有附加优势,以帮助缓解您的Beanstalk ec2实例的负载。

首先设置一个指向你的beanstalk负载平衡器(你也可以创build一个指向你的弹性beanstalk域名的自定义起源)的源的分布。 然后用“查看器协议策略”创build一个行为来“将HTTPredirect到HTTPS”。

唯一的问题是,您可能需要重新上传您的SSL证书以添加“path”,以便在CloudFront中可用。

 aws iam upload-server-certificate --server-certificate-name certificate_object_name --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file --path cloudfront_path