【问题标题】:Hosting Gatsby on a subdirectory using NGINX使用 NGINX 在子目录中托管 Gatsby
【发布时间】:2018-08-13 18:46:03
【问题描述】:

如何使用 nginx 在子目录中托管 gatsby.js,我已经尝试使用 proxy_pass http://127.0.0.1:8000gatsby develop 来执行此操作,但我遇到了 Socket.io 的问题。有谁知道如何在我尝试使用以下重写代码rewrite ^([^.\?]*[^/])$ $1/ permanent 的子目录上托管 gatsby。但这无济于事。

修复

好吧,一开始我用gatsby develop这样我可以使用HMR,但我猜乞丐不能选择,所以根据fabian所说,我做了以下。

这就是我最终所做的,

我在我的gatsby-config.js 文件中添加了pathPrefix: '/blog'

我在项目的主目录上运行了gatsby build --prefix-paths

并将 public 文件夹中的内容复制到我网站根目录中名为 blog 的文件夹中,它运行良好(没有 HMR,就是这样)。

【问题讨论】:

    标签: nginx subdirectory gatsby


    【解决方案1】:

    GatsbyJS 是一个静态站点generator,这意味着它输出静态的 HTML、CSS 和 JS。您实际上不需要设置 NodeJS 服务器来使其运行。 gatsby develop 只能在开发(本地)中使用,而不是在生产中。

    基本上,您需要运行gatsby build 并将本地public 目录中的所有文件移动/上传到服务器上的子目录。当然,该子目录需要是publicly available/served via NGINX、Apache 或类似的。例如:

    location /subdirectory {
      root /html/my-site/public;
      index.html;
    }
    

    找到more details on deploying GatsbyJS here。另外,别忘了add a Path Prefix

    【讨论】:

    • 是的,谢谢,我已经这样做了。我使用gatsby develop 的原因是因为我的gatsby build 崩溃总是给出一个webpack 错误,事实证明删除我的node_modules 文件夹和.cache 有助于修复它。谢谢。
    • 这种语法是否正确?我在检查 nginx -t 时收到错误 unknown directive "index.html"
    • 该指令必须是index index.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2013-06-12
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多