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

f3temu5u  于 2022-11-03  发布在  Node.js
关注(0)|答案(2)|浏览(218)

我很难找到任何有用的文档,说明如何在自定义生产环境(而不是Gatsby Cloud或Netlify)中正确设置使用SSR(服务器端渲染)的Gatsby端
在他们的SSR文档中有一节
服务器端渲染需要一个运行的NodeJS服务器。你可以把运行gatsby serve的NodeJS放在一个像Fastly这样的内容交付网络(CDN)后面,但是这也需要额外的基础设施(比如监控、日志记录和崩溃恢复)。
因此,我的总体想法是将所有这些内容放入某个Docker容器中,然后运行gatsby serve
但是,根据gatsby serve的文档(https:www.gatsbyjs.com/docs/reference/gatsby-cli/#serve),这不应用于生产
在Gatsby站点的根目录下,为站点的生产版本提供服务以进行测试
是否可以使用serve production?使用时需要注意哪些安全问题?是否有详细的文档说明如何在自定义环境中设置它?

wbgh16ku

wbgh16ku1#

自定义服务器上的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),所以你不需要自己的服务器。

ffx8fchx

ffx8fchx2#

我也遇到过同样的问题,但找不到一个完整的解决方案。最接近的解决方案是使用gatsby-plugin-fastify。它有很多不错的特性。但是,它也有一些缺点。它不像gatsby-cloud那样处理回退路由。这很容易修复。
我对插件做了一些修改。并撞了fastify包。直到那一刻,可以合并到原来的贡献者repo,你可以使用我的版本的包。gatsby-plugin-fastify-klyngen
使用原来的fastify插件非常容易。
1.安装软件包
npx gserve
1.将fastify插件添加到您的gatsby.config中

plugins: [
    {
      resolve: `gatsby-plugin-fastify`,
      options: {
        features: {},
      },
    },
    ...otherPlugins
  ]

1.运行服务器
npx gserve
Fastify应该在一个合适的网络服务器后面,比如Nginx。我也建议把服务器放在CDN或者缓存后面,以获得更好的性能。
编辑:gatsby-plugin-fastify现在支持回退路由。

相关问题