Я хотел бы использовать приложение узла в качестве пути к моему домену, например: http://example.com/foo фактически будет обслуживать приложение узла, работающее на порту 8080.
Я просмотрел ProxyPass и ProxyPassReverse:
ProxyPass /foo http://localhost:8080
ProxypassReverse /foo http://localhost:8080
Это будет обслуживать index.html приложения узла, но я получаю в консоли ошибки обо всех активах:
Failed to load resource: the server responded with a status of 404 (Resource not found) http://example.com/styles/4742a4e8.main.css
Я думал, что директива ProxyPassReverse позаботится об этом, но, видимо, нет. у меня есть очень ограниченные знания об apache. Есть какие-нибудь яркие идеи, как это решить?
Отказ от ответственности: да, я изучил многие nodejs в сочетании с вопросами apache, но ни один из них не решает проблему использования подкаталога в URL-адресе
Я думаю об этом http://example.com/styles/4742a4e8.main.css
на самом деле является файлом в приложении JS узла, поэтому относится к http://localhost:8080/styles/4742a4e8.main.css
, но на него есть ссылка в index.html из вашего приложения узла как /styles/4742a4e8.main.css
При сопоставлении прокси-сервера происходит следующее: когда вы запрашиваете
http://example.foo/foo/
он отправляет запрос, который возвращается http://localhost:8080/index.html
как есть. Любые ссылки в index.html не изменяются, поэтому, когда браузер запрашивает компоненты, он запрашивает http://example.com/styles/4742a4e8.main.css
но файл действительно доступен только через http://example.com/foo/styles/4742a4e8.main.css
если / styles / не используется в example.com, вы можете добавить
ProxyPass /styles http://localhost:8080/styles
ProxypassReverse /styles http://localhost:8080/styles
Но это может стать обременительным, если у вас много каталогов.
Другой подход - использовать относительные пути в вашем приложении узла. Поэтому вместо ссылки на index.html /styles/4742a4e8.main.css
он ссылался styles/4742a4e8.main.css
(без ведущей косой черты). Это может стать громоздким из-за вложенных путей в вашем приложении узла.
Другим решением может быть изменение вашего приложения node.js, чтобы оно полностью запускалось под localhost: / foo, чтобы сопоставление каталогов было таким же.
Я не уверен, что какое-либо из этих решений идеально подходит для вашего варианта использования, но, надеюсь, они укажут вам правильное направление.