Я хотел бы одновременно запустить apache2 и приложение node.js на моем веб-сервере.
Мне бы хотелось, чтобы на моем веб-сайте www.example.com/myApp запускалось мое приложение (через прокси-сервер с порта 8080), а все остальное на www.example.com/* запускалось apache (обычно на порту 80). Я прочитал пару вопросов по этому поводу в StackOverflow, но не смог заставить его работать должным образом.
Я использую
yarn start --port 8080 --host 0.0.0.0 --disable-host-check
чтобы запустить мое приложение.
Для этого я менял значения в своем файле apache.conf на моей виртуальной машине Ubuntu 18.04. Я запускаю мое приложение с пряжей.
Я включил
sudo a2enmod proxy && sudo a2enmod proxy_http
и у меня есть следующие строки в моем конфигурационном файле:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ServerName example.com
ProxyPreserveHost On
ProxyRequests Off
Если я добавлю
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
в мой файл apache.conf, приложение успешно работает на www.example.com .
Однако я могу получить доступ к каталогам только из папки, в которой установлено / работает приложение. Я не могу получить доступ к каталогам apache.
Если вместо этого я добавлю
ProxyPass /myApp/ http://localhost:8080/
ProxyPassReverse /myApp/ http://localhost:8080/
тогда приложение запускается на www.example.com / myApp , что то, что я хотел, но оно больше не работает правильно, , и я не знаю почему.
Любой другой URL на сайте указывает на мой apache dir (/ var / www / html), который также является тем, что я хотел.
Приложение всегда правильно работает на localhost: 8080.
У меня нет опыта работы с этими вещами, и мне кажется, что я действительно близок ко второму решению, но я, должно быть, что-то упускаю, так как приложение перестает работать правильно.