CloudFront 如何从 S3 在现有分发服务网站上设置反向代理

Har*_*dha 8 reverse-proxy nginx http-redirect amazon-web-services amazon-cloudfront

我有一个 S3 存储桶,它托管一个网站并随 CloudFront 一起提供

现在我已将发行版附加到我的顶点根域中,例如 - www.xyz.com

因此,以前我们使用 Nginx 从同一域上的网络服务器根目录提供静态前端 - www.xyz.com 并且还设置了一个反向代理 - www.xyz.com/api/** 将流量路由到上游后端服务器在同一台机器上。

现在,我想将网站移至 S3,但仍在同一台机器上运行后端 API,为此我必须更改我的 DNS 记录并将它们指向 CloudFront 分配。

但是,然后使用 www.xyz.com/api 作为后端服务的现有和以前部署和运行的服务将中断所以,我想将此路径模式上的所有请求转发到 http:///api 以便现有应用程序不不破。

有没有办法实现这一目标?IE -

从 CloudFront 分发的子路径转发请求,将静态前端从 S3 传送到外部应用程序服务器?

---更新--- ---Nginx conf 重定向请求---

location /api/ {
                proxy_pass http://localhost:4040/api/;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
                proxy_http_version 1.1;
        }
Run Code Online (Sandbox Code Playgroud)

这是在服务器指令中,该指令当前向世界公开根域和前端,但现在我想将前端迁移到 S3,因此仅出于兼容性目的保留此位置块 /api,直到我更新所有客户端上的配置。

如果是这样,请建议如何完成此操作,或者您需要我方提供哪些信息来帮助完成此操作?

谢谢,

Mic*_*bot 13

api.example.com在 DNS 中创建,指向您的 API。

在 CloudFront 中创建第二个 Origin,指向api.example.com. 将“Origin Path”留空,因为它不会执行您可能假设的操作。

在 CloudFront 中创建一个新的缓存行为,路径模式为/api*. 将此指向新创建的原点。

CloudFront 会将所有对/api*to 的请求api.example.com以及其他所有内容发送到默认缓存行为源,即存储桶。

  • 是的,它在创建行为和第二个起源之后就像一个魅力。谢谢您的帮助!! (3认同)