如何在生产环境中正确使用SSR 运行 gatsby

How to properly run gatsby with SSR in a production environment

我很难找到有关如何在自定义生产环境(不是 Gatsby Cloud 或 Netlify)中正确设置使用 SSR(服务器端渲染)的 gatsby 端的任何有用文档

在他们的 SSR 文档中有一节

Server-Side Rendering requires a running NodeJS server. You can put NodeJS running gatsby serve behind a content delivery network (CDN) like Fastly, however that also requires additional infrastructure (like monitoring, logging, and crash-recovery).

所以我的总体想法是将所有这些都放在一些 Docker 容器和 运行 gatsby serve

但是根据 gatsby serve (https://www.gatsbyjs.com/docs/reference/gatsby-cli/#serve ) 的文档,这不应该用于生产

At the root of a Gatsby site, serve the production build of your site for testing

使用serve production可以吗?使用时需要注意哪些安全问题?是否有详细的文档说明如何在自定义环境中进行设置?

自定义服务器上没有关于 SSR 模式的文档。但一般来说,你会想使用 Express 之类的东西来提供静态文件(不是 gatsby 服务),然后你可以查看 gatsby-plugin-netlify 和 gatsby-plugin-fastify 以获取灵感,因为它们支持 SSR。

您必须使用我作为灵感提到的那些插件自己编写服务和运行时 SSR 逻辑。该框架不处理应用程序的服务,Gatsby Cloud 和 Netlify 等平台会处理。或者在您的情况下,自定义服务器。

您可能会发现这很有用 https://github.com/wille/gatsby-plugin-express 还应该知道有很多超级简单的部署方法(Gatsby Cloud、Netlify、Vercel),因此您不需要自己的服务器。不能使用 serve 命令的原因是缓存、重定向、headers 等