gpt4 book ai didi

node.js - 通过 Express 中间件从 google-cloud-storage 提供静态文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:02 26 4
gpt4 key购买 nike

我有一个托管在 Google AppEngine 上的 Express 应用程序,它使用 Express 静态中间件。我希望将静态文件存储在 google-cloud-storage 上,并且能够从常规文件系统切换到 google-cloud-storage 而无需进行太多修改。

我正在考虑编写一个中间件:

有没有更简单/更干净的方法来做到这一点?

最佳答案

我使用 http-proxy-middleware 完成了这项工作。本质上,由于 GCS 文件可以通过 http 协议(protocol)访问,这就是我们所需要的。

理想情况下,文件可以直接从 GCS 本身提供,方法是将存储桶公开并使其 URL 类似于 https://storage.googleapis.com/<bucket-name>/file 。但我的要求是需要从与我的应用程序相同的域提供文件,但这些文件不是应用程序本身的一部分(它们是单独生成的)。因此,我必须将其实现为代理。

import proxy from 'http-proxy-middleware';
...

app.use('/public', proxy({
target: `https://storage.googleapis.com/${process.env.GOOGLE_CLOUD_PROJECT}.appspot.com`,
changeOrigin: true,
}));

请注意,基于项目 ID 的存储桶是由 GAE 自动创建的,但需要授予公共(public)访问权限。这可以通过

来完成
gsutil defacl set public-read gs://${GOOGLE_CLOUD_PROJECT}.appspot.com

设置代理后,所有请求都发往https://example.com/public/ *将从桶中提供<GOOGLE_CLOUD_PROJECT>.appspot.com/public/* .

关于node.js - 通过 Express 中间件从 google-cloud-storage 提供静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com