Использование Apache в качестве прокси для внутреннего сервера JavaScript (Strapi) - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь настроить установку Strapi.io так, чтобы она работала на существующем сайте Apache, работающем на порту 80.

Подробности:

  • Сервер Strapiработает на порту 1337.
  • На сервере Strapi есть и главная страница на /, и на панели администратора / admin
  • Мой сайт Apache работает на http://example.com на порту 80

Я отредактировал свой файл конфигурации 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 Uncaught (в обещании) SyntaxError: Неожиданный токен <в JSON в позиции 0 в r (main.js: 40) r@ main.js: 40 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 </p>

main.js: 45 Uncaught (в обещании) SyntaxError: неожиданный токен <в JSON в позиции 0 в точке t (main.js:45) t @ main.js: 45 Promise.then (async) u @ main.js: 1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js: 45 a @ main.js: 1 (анонимный) @ main.js: 1 (анонимный) @ </p>

main.js: 1 main.js: 40 необработанный (в обещании) SyntaxError: неожиданный токен <в JSON в позиции 0 в n (main.js: 40) </p>

Если я обновлю страницу, некоторые или все main.js будут отображаться как admin.js.Не уверен, имеет ли это значение:

main.js: 40 Uncaught (в обещании) SyntaxError: Неожиданный токен <в JSON в позиции 0 в r (main.js: 40) r @ main.js: 40 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 </p>

admin: 1 Uncaught (в обещании) SyntaxError: неожиданный токен <в JSON в позиции 0 Promise.then (async) u @ main.js:1 ./node_modules/strapi-helper-plugin/lib/src/app.js @ main.js: 40 т @ main.js: 1 (анонимный) @ main.js: 1 (анонимный) @ main.js: 1 </p>

admin: 1 Uncaught (в обещании) SyntaxError: Неожиданный токен <в JSON в позиции 0 </p>

Почему у меня возникла эта проблема.Что мне нужно сделать, чтобы это работало правильно с моим сервером Apache?

Чтобы уточнить:

Это была очень простая двухминутная установка.Я еще не начал добавлять контент на сайт.Я просто пытаюсь заставить админку работать через Apache.

1 Ответ

0 голосов
/ 28 февраля 2019

Apache по умолчанию обслуживает index.html в ответ на любой запрос, который он получает.

Поэтому, в первую очередь, я хотел бы добавить

DirectoryIndex disabled 

в .htaccess, так как strapi.io APIзапускается в / корневой папке, и вместо этого apache возвращает файл Apache .html по умолчанию, который переопределяет запрос API.

Что именно там происходит?

1.- Ваше приложение JavaScript (strapi.io) запрашивает data.json в точке API, и оно получает содержимое index.html.

2.- Так как содержимоеindex.html не являются JSON, и начинаются с <, он выдает сообщение об ошибке.Файл JSON не может начинаться с <.

...