使用aws弹性beanstalk将非www重定向到www

时间:2017-01-16 04:45:00

标签: express nginx amazon-ec2 elastic-beanstalk amazon-route53

我正在使用Elastic Beanstalk,我按照说明使用快速Web服务器部署我的应用程序,如下所示: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html

此设置使用nginx和路由53。

一切正常,但现在我正在尝试从非www /非https网址重定向到“https://www.domain.com”(始终使用www进行https)。

我已经看到了不同的解决方案,这些解决方案要么不起作用,要么看起来很糟糕。从aws console

执行此操作的正确方法是什么?

非常感谢!

2 个答案:

答案 0 :(得分:1)

有一种简单的方法可以做到这一点。

  1. 转到您的负载均衡器
  2. 选择您的 LB
  3. 点击监听器标签
  4. 点击规则下的 -> 查看/编辑规则
  5. 添加另一个规则
  • 条件 -> 主机头:yoursite.com
  • 添加操作 -> 重定向到:
  • HTTPS -> #{port}
  • 自定义主机、路径、查询
  • 主持人:www.yoursite.com
  • 保留所有内容和 301 标题
  1. 保存就可以了!

所有内容都将重定向到您的 WWW 网址。

更多解释见:https://channaly.medium.com/how-to-redirect-www-to-non-www-and-http-to-https-in-amazon-elasticbeanstalk-using-route53-and-alb-1098d54903c8

答案 1 :(得分:0)

您可以设置一个将裸域重定向到www的S3存储桶。这里解释了。

http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html

您可以使用Cloudfront将http重定向到https。您可以在此处阅读更多信息。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https.html

您可以在EC2实例上设置网络服务器以进行重定向,但这也要求您设置SSL证书。让Cloud通过Cloudfront处理它更容易。

你可能正在使用Apache,所以它会是这样的。

NameVirtualHost *:80
<VirtualHost *:80>
   ServerName mysite.example.com
   DocumentRoot /usr/local/apache2/htdocs 
   Redirect permanent / https://mysite.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName mysite.example.com
   DocumentRoot /app/directory/
   SSLEngine On
   # etc...
</VirtualHost>

然后在部署脚本中使用LetsEncrypt设置SSL证书。