You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将VPS上自托管Ghost配置到网站子目录并搭配静态站点?

实现Ghost子路径部署 + SSG主站的方案

完全可以把Ghost部署到mycompany.com/blog子路径,同时用Next.js/Gatsby做主站的主页和项目页。下面是具体配置步骤,以及备选方案:

一、子路径部署Ghost的具体操作

1. 修改Ghost核心配置

找到Ghost生产环境的config.production.json(默认路径是/var/www/ghost/config/),修改url和添加paths字段:

{
  "url": "https://mycompany.com/blog",
  "paths": {
    "subdir": "/blog"
  },
  // 保留原来的数据库、邮件等配置项
}

改完后重启Ghost服务:ghost restart

2. 配置Nginx反向代理

主站(SSG生成的静态文件或SSR服务)和Ghost的路由都通过Nginx转发,配置示例:

server {
  listen 80;
  server_name mycompany.com;

  # 处理SSG主站的根路径请求
  location / {
    root /var/www/my-ssg-site/build; # 替换成你的SSG构建产物路径
    try_files $uri $uri/ /index.html; # SPA模式的路由 fallback
    # 如果是Next.js SSR,改成 proxy_pass http://localhost:3000;
  }

  # 代理Ghost到/blog路径
  location /blog/ {
    proxy_pass http://localhost:2368/; # Ghost默认运行在2368端口
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
  }
}

注意proxy_pass末尾的/不能丢,否则路径会拼接错误。配置完重启Nginx:sudo systemctl restart nginx

3. 验证

访问mycompany.com应该加载SSG的主页,mycompany.com/blog能正常打开Ghost的博客和后台(后台路径是mycompany.com/blog/ghost)。

二、如果子路径配置遇到兼容问题,试试这些替代方案

方案1:子域名Ghost + 主站导航跳转

保留现有blog.mydomain.com的Ghost部署,在Next.js/Gatsby主站的导航栏加个「博客」按钮,直接跳转到子域名。这种方式零配置成本,只要保持主站和博客的视觉风格一致就行,适合不想折腾反向代理的情况。

方案2:把Ghost当无头CMS,用SSG渲染博客内容

启用Ghost的Content API(默认开启),在Next.js/Gatsby里直接拉取博客内容,在mycompany.com/blog路径下渲染,完全不用单独跑Ghost的前端。步骤如下:

  • 在Ghost后台「Integrations」里新建一个自定义应用,拿到API密钥和API地址;
  • 在SSG项目里装对应的插件(比如Gatsby用gatsby-source-ghost,Next.js用next-ghost),配置好API参数;
  • 写页面组件,调用API获取博客列表、详情,生成/blog下的页面。
    这种方式的好处是所有内容都在同一个域名下,而且Ghost只做内容管理,能节省VPS内存(对你的1GB内存机器更友好)。

内容的提问来源于stack exchange,提问作者Govind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 02:15:37