4

我想设置我的 S3 存储桶以将路由的路径重写为/apiAPI 网关 URL。

所以采取以下措施:

例子

  • 用户访问网站 bacon.com
  • 网站从 Cloudflare DNS 转到 S3 存储桶
  • 网站是一个反应应用程序
  • React 应用程序调用 api 这是bacon.com/api
  • S3 重写/apiapi 网关 url 的路径 https://ljsdflkjlsdk.execute-api.us-east-1.amazonaws.com/dev

我能够让它在这里工作:

s3

但是,它会将 URL 转发到不需要的 API 网关 URL。

我不完全确定这是可能的。我在想它可能需要我实现类似 Route53 的东西,或者编写一个 cloudflare worker 来处理重写?

在此先感谢您的帮助!

4

1 回答 1

1

因此,您希望将请求代理/api到后端 API 的路径,而其他路由,例如/login由 React 应用程序提供服务。

我可能错了,但我认为 S3(作为静态托管服务提供商)和 Route 53(作为 DNS 工具)都无法解决这个问题。

既然您提到您已经在使用 Cloudflare,那么您可以毫不费力地使用 CF Workers 来做到这一点!

  1. 确保bacon.com由 CF 代理(DNS 选项卡上的橙色云打开)
  2. 使用以下代码创建一个新工人:
const backendUrl = "https://ljsdflkjlsdk.execute-api.us-east-1.amazonaws.com/dev"

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

/**
 * Respond to the request
 * @param {Request} request
 */
async function handleRequest(request) {
  return fetch(backendUrl, request)
}
  1. 将工人与/api工人选项卡上的路径相关联bacon.com
  2. bacon.com/api现在是向后端 url 发送请求的代理!
于 2021-02-11T15:43:03.787 回答