使用 nginx 将域根重定向到 CloudFront?

使用 nginx 将域根重定向到 CloudFront?

注意 - 我看到其他几个关于重定向的问题他们的 S3 静态网站的根目录,但我没有看到任何关于重定向的内容域名的根CloudFront/S3 站点。

我将个人网站部署到 AWS CloudFront 并静态托管在 S3 上。我有一个 www. CNAME 记录指向 CloudFront 主机名,并且运行正常,但我发现您无法拥有域根的 CNAME 记录。我已经有一个带有 nginx 的 VPS,它托管了我的其他几个项目 - 只需从域根向我的 VPS IP 添加一条 A 记录,并让 nginx 将域根的请求重定向到 CloudFront 主机名,这样可以吗?

编辑:澄清一下 - 我希望所有前往 example.com 的流量都转发到分配给我的网站的 CloudFront 主机名。我可以使用以下方法执行此操作www.example.com通过为“www.”创建指向所需主机名的 CNAME 记录。但是,Google Domains 似乎不允许为根目录(即仅 example.com)创建 CNAME 记录,因此我想知道如何将来自 example.com 的流量转发到我的 CloudFront 主机名(而不是我现在可以做的,即仅转发www.example.com到cloudfront)。

如果相关的话,我无法进行任何类型的通配符重定向,因为我在域上为需要特定 A 记录的不同项目使用了其他主机名。

对于网站来说,这是一个可接受/良好的 nginx 配置吗?我认为它会起作用,因为www.example.com已正确转发至 CloudFront 主机名。

server {
        listen 443 ssl;
        server_name example.com;
        rewrite ^/$ https://www.example.com permanent;
        ssl_certificate           /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key       /etc/letsencrypt/live/example.com/privkey.pem;
}

答案1

我假设您指的是域名根目录 example.com,而不是www.example.com,并且您希望将其指向您的 AWS 云 Web 应用程序。您可以做的一件事是创建一个名为 @ 的 A 记录,它本质上表示“这是我。对我 (example.com) 的任何 DNS 请求都应转到此 IP 地址。”然后添加指向 @ 的 CNAME www。您可以根据需要使用 Nginx,用于直通的 Nginx 只是一个反向代理。它将充当客户端和服务器之间任何请求的中间人。Nginx 只是在客户端和服务器之间重复这些消息。

我希望这能有所帮助,我的感觉是我读错了问题

答案2

如果你将域迁移到 AWS 的 Route53 服务,这非常简单。你只需使用向导创建一个别名记录,这是 route53 特有的功能。使用别名,您可以将区域顶点(您的example.com)指向 Cloudfront Distribution,然后只需创建第二条记录,该记录www也是 CF Distribution 的别名。

在注册商之间迁移也非常简单——去年我自己从 123-reg 迁移到了 AWS,这几乎是毫不费力的。

相关内容