我有一个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.com
和www.my_domain.com
只工作和使用一个Zappa项目。这就像两个门进入同一个房间。
浏览器的地址栏没有改变,用户在网站上正常操作。一个警告如果您正在使用cookie以确保它们被共享,则此方法需要更加小心在两个域之间。
混叠需要一些高级的AWS服务配置。
API网关配置
- 在AWS控制台中,转到API Gateway服务
- 在左侧菜单中,点击自定义域名
- 点击您的域名(
www.my_domain.com
) - 点击API映射在左边,记下API和Stage 的设置点击创建按钮在左边
- 输入空域名(如
my_domain.com
) - 选择
Edge optimized
- 在ACM证书下,选择与您创建的域名同名的证书
- 点击创建域名
- 点击新创建的裸域(
my_domain.com
) - 选择API映射
- 点击配置API映射
- 添加您之前注意到的相同映射 点击保存
Route 53配置
- 在AWS控制台,转到Route 53服务
- 在左侧菜单中选择Hosted Zones
- 选择您的域名(例如my_domain.com)
- 点击创建记录
- 在"记录名称"中,不输入
- 在记录类型中,选择
A
记录(如果相反,选择CNAME
) - 在"Value"中输入
www
域名(www.my_domain.com
) - 在TTL中,你可以放任何你想要的,但
172800
将缓存请求两天,这不是太糟糕。 - 点击创建记录
ACM配置您必须确保证书涵盖my_domain.com
和www.my_domain.com
。
扎帕配置确保在ALLOWED_HOSTS
中添加两个域名,否则Django会拒绝请求。
我遵循了这个线程。
以下是有效的步骤(尽管我不确定为什么):- 转到API网关
- 创建新的自定义域:
my_domain.com
- 使用先前批准的
my_domain.com
记录 - 在新域中,在"API映射"下;从
www.my_domain.com
复制设置 - 返回53号公路
- 创建A记录
- 前缀留空
- 在"路由流量到"中复制cloudfront url。从新的API网关域