使用Apache作为后端JavaScript(Strapi)服务器的代理



我正在尝试设置Strapi.io安装,以便它在端口80上运行的现有Apache网站上工作。

详细信息:

  • Strapi服务器在端口1337上运行。
  • Strapi Server在/和Admin面板/Admin li>我的Apache网站在port 80上的http://example.com上运行

我已经编辑了我的apache配置文件并添加了以下行:

ProxyPass /admin http://localhost:1337/admin
ProxyPassReverse /admin http://localhost:1337/admin
ProxyPass /api http://localhost:1337/
ProxyPassReverse /api http://localhost:1337/

当前在/API页面上工作正常,而不是管理页面。在管理页面上,我得到以下控制台错误:

main.js:40个未被告人(有望)SyntaxError:意外的令牌<在 位置0的JSON 在r(main.js:40)r @ main.js:40 Promise.then(async)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/lib/src/src/src/app.js @ main.js:40 t @ main.js:1(匿名) @ main.js:1(匿名) @ main.js:1

main.js:45未被发现(诺言)语法:意外 token<在位置0的JSON中 在t(main.js:45)t @ main.js:45 promise..then(async)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/lib/src/src/app.js @ main.js:45 a @ main.js:1(匿名) @ main.js:1(匿名) @

main.js:1 main.js:40个未谋生(在承诺)语法:意外 token<在位置0的JSON中 在n(main.js:40)

如果我刷新页面,则main.js的某些或全部为admin.js。不确定是否有所作为:

main.js:40个未被告人(有望)SyntaxError:意外的令牌<在 位置0的JSON 在r(main.js:40)r @ main.js:40 Promise.then(async)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/lib/src/src/src/app.js @ main.js:40 t @ main.js:1(匿名) @ main.js:1(匿名) @ main.js:1

admin:1个未被告人(在承诺中)Syntaxerror:意外的令牌 <在位置0 promise.then(async)u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js:40 t @ main.js:1(匿名) @ main.js:1(匿名) @ main.js:1

管理员:1 被取消(有望)SyntaxError:意外的令牌<在JSON AT 位置0

为什么我会遇到这个问题。我该怎么做才能使此操作正确地使用Apache服务器?

澄清:

这是一个非常简单的两分钟安装。我尚未开始向网站添加任何内容。我只是想让管理面板通过Apache工作。

apache默认情况下为响应其得到的任何请求而使用。

因此,我的第一个想法是添加

DirectoryIndex disabled 

to .htaccess,因为strapi.io api在 / root文件夹和apache返回默认的apache .html文件,这是覆盖API请求的apache .html文件。

到底发生了什么?

1.-您的JavaScript应用(strapi.io)在您的API点要求data.json,并获得index.html的内容。

2.-由于index.html的内容不是JSON,并从<开始,因此会引发错误消息。JSON文件不能以<开头。

您可能会遇到问题,因为Strapi当前没有实现URL前缀。

为了解决这个问题,您可能需要使用"/"而不是"/api"的根目录上的端口80上的子域或运行strapi。如果您在同一Apache服务器上有其他项目或应用程序,则可以使用ProxyPassMatch忽略这些路径。例如:

ProxyPassMatch ^/otherproject !
ProxyPass "/" http://localhost:1337/
ProxyPassReverse "/" http://localhost:1337/

在这种情况下,"/admin"路由也将在没有进一步修改的情况下工作。

另外,有些人使用Strapi中间件将前缀应用于其路线(请参见此处的示例)。

最新更新