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

能否通过Apache反向代理将Strapi部署至现有网站子目录?

解决Apache反向代理Strapi到子路径的问题

我来帮你搞定通过子路径/strapi访问Strapi的问题,你当前的Apache配置已经有基础,但因为Strapi默认基于根路径运行,直接代理会导致它生成的静态资源、API链接仍指向根路径,所以得同时调整Apache配置和Strapi的内部设置,具体步骤如下:

1. 调整Apache反向代理配置

把你现有的配置替换成下面的内容,重点修正路径斜杠和Cookie路径适配:

ProxyPreserveHost On
# 注意路径结尾的斜杠:确保/strapi/下的请求正确映射到Strapi的根路径
ProxyPass /strapi/ http://0.0.0.0:1337/
ProxyPassReverse /strapi/ http://0.0.0.0:1337/
# 修正Cookie路径,让Strapi生成的Cookie适配子路径
ProxyPassReverseCookiePath / /strapi/

为什么要加结尾斜杠? 如果不带斜杠,访问/strapi/api会被错误代理到http://0.0.0.0:1337api,带斜杠才能正确映射到http://0.0.0.0:1337/api。ProxyPassReverseCookiePath则是把Strapi默认的根路径Cookie,修改为/strapi/路径,避免登录等Cookie失效问题。

2. 修改Strapi的服务器配置

你需要让Strapi知道它运行在/strapi子路径下,这样它生成的所有链接都会自动加上这个前缀。找到Strapi项目根目录下的config/server.js(如果是生产环境,可能是config/env/production/server.js),修改配置如下:

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    // 关键:设置Strapi的外部访问完整地址
    url: 'https://example.com/strapi/',
  },
  // Strapi v4及以上需配置proxy,适配反向代理环境
  proxy: {
    enabled: true,
    ssl: true, // 你的前端是HTTPS,这里要开启
    host: 'example.com',
    port: 443,
    path: '/strapi/',
  },
});

app.url会告诉Strapi它的外部访问地址,后台管理界面的静态资源、API调用都会自动使用这个前缀;proxy配置则让Strapi正确识别反向代理的HTTPS环境,避免路径和协议错误。

3. 重启相关服务

  • 重启Apache使配置生效:sudo systemctl restart apache2(如果是CentOS等系统,可能是httpd)
  • 重启Strapi服务:生产环境建议用PM2等进程管理器重启,开发环境可以用npm run build && npm run start

完成这些步骤后,你访问https://example.com/strapi/就能正常打开Strapi的后台管理界面,所有API和静态资源都会正确映射到子路径下了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:38:37