如何将zappa应用程序部署到https://www.my_domain.com和https://my_domain.c



我有一个Flask应用,我使用Zappa来部署。我已经成功地将其部署到www.my_domain.com。但是很多人告诉我"你的网站坏了"。当我跟进的时候,是因为他们去了https://my_domain.com(没有www)。

我想从那个重定向到工作站点。我的证书是通过AWS的,技术上是www.my_domain.com, *.my_domain.com和my_domain.com(尽管当我进行电子邮件审批时,*.my_domain.com和my_domain.com都被解释为my_domain.com)。

我试过改变我的zappa_settings。Json域名,但没有改变。

为了回答这个问题,我假设裸域是次要的,www是主要的。如果您选择相反的选项,则在阅读时只需将术语颠倒。

将一个站点重定向到另一个

重定向意味着浏览器可以加载my_domain.com,但接收到HTTP响应301永久移动。这意味着浏览器将重定向到www.my_domain.com并导航到该站点。

用户看到地址栏更改为www.my_domain.com(尽管许多浏览器现在隐藏)地址的www部分)和新页面加载。

重定向需要在my_domain.com上运行某种类型的HTTP服务器。如果你已经有了如果HTTP服务器正在运行,那么配置web服务器来发送重定向就很简单了。

如果你没有服务器,那么你可以使用像S3, Github, netflix这样的静态网站服务提供重定向。

设置整个web服务器来发送301代码有点烦人。但是这个方法

将一个站点别名为另一个站点

Alias意味着my_domain.comwww.my_domain.com只工作和使用一个Zappa项目。这就像两个门进入同一个房间。

浏览器的地址栏没有改变,用户在网站上正常操作。一个警告如果您正在使用cookie以确保它们被共享,则此方法需要更加小心在两个域之间。

混叠需要一些高级的AWS服务配置。

API网关配置

  1. 在AWS控制台中,转到API Gateway服务
  2. 在左侧菜单中,点击自定义域名
  3. 点击您的域名(www.my_domain.com)
  4. 点击API映射在左边,记下API和Stage
  5. 的设置点击创建按钮在左边
    1. 输入空域名(如my_domain.com)
    2. 选择Edge optimized
    3. 在ACM证书下,选择与您创建的域名同名的证书
    4. 点击创建域名
  6. 点击新创建的裸域(my_domain.com)
  7. 选择API映射
  8. 点击配置API映射
    1. 添加您之前注意到的相同映射
    2. 点击保存

Route 53配置

  1. 在AWS控制台,转到Route 53服务
  2. 在左侧菜单中选择Hosted Zones
  3. 选择您的域名(例如my_domain.com)
  4. 点击创建记录
    1. 在"记录名称"中,不输入
    2. 在记录类型中,选择A记录(如果相反,选择CNAME)
    3. 在"Value"中输入www域名(www.my_domain.com)
    4. 在TTL中,你可以放任何你想要的,但172800将缓存请求两天,这不是太糟糕。
    5. 点击创建记录

ACM配置您必须确保证书涵盖my_domain.comwww.my_domain.com

扎帕配置确保在ALLOWED_HOSTS中添加两个域名,否则Django会拒绝请求。

我遵循了这个线程。

以下是有效的步骤(尽管我不确定为什么):
  • 转到API网关
  • 创建新的自定义域:my_domain.com
  • 使用先前批准的my_domain.com
  • 记录
  • 在新域中,在"API映射"下;从www.my_domain.com
  • 复制设置
  • 返回53号公路
  • 创建A记录
  • 前缀留空
  • 在"路由流量到"中复制cloudfront url。从新的API网关域

最新更新