使用 aws elastic beanstalk 将非 www 重定向到 www
Posted
技术标签:
【中文标题】使用 aws elastic beanstalk 将非 www 重定向到 www【英文标题】:Redirect non-www to www with aws elastic beanstalk 【发布时间】:2017-05-30 21:21:21 【问题描述】:我正在使用 Elastic Beanstalk,并按照说明使用 express Web 服务器部署我的应用程序,如下所示: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_nodejs_express.html
此设置使用 nginx 和路由 53。
一切正常,但现在我正尝试从非 www/非 https 的 URL 重定向到“https://www.domain.com”(总是带有 www 的 https)。
我已经看到了不同的解决方案,它们要么不起作用,要么看起来很老套。从aws console
执行此操作的正确方法是什么?
非常感谢!
【问题讨论】:
【参考方案1】:有一个简单的方法可以做到这一点。
-
转到您的负载均衡器
选择您的 LB
单击“侦听器”选项卡
在规则下单击 -> 查看/编辑规则
添加其他规则
-
保存,一切顺利!
所有内容都将被重定向到您的 WWW 网址。
更多解释在这里:https://channaly.medium.com/how-to-redirect-www-to-non-www-and-http-to-https-in-amazon-elasticbeanstalk-using-route53-and-alb-1098d54903c8
【讨论】:
【参考方案2】:您可以设置一个将裸域重定向到 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 实例上设置 Web 服务器以进行重定向,但这也需要您设置 SSL 证书。让 AWS 使用 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 证书。
【讨论】:
以上是关于使用 aws elastic beanstalk 将非 www 重定向到 www的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk 上禁止使用 Django 403
使用 AWS CodeBuild 和 EB CLI 部署到 AWS Elastic Beanstalk