Проблема с перезаписью apache для приложения nodejs - PullRequest
0 голосов
/ 17 июня 2020

Я борюсь с этим случаем в течение пары часов и не могу понять.
Apache работает как прокси-сервер для nodejs приложения, работающего с адресом localhost - в моем случае 127.0.0.1:7777 (чтобы быть больше точное приложение - adminMon go).
Поскольку у меня есть рабочая apache конфигурация, я не хочу связываться с ней и перенастраивать все на VirtualHosts, поэтому я создал Location как это

<Location /adminMongo>
        Header edit Location "/app" "/adminMongo/app"

        ProxyPass "http://127.0.0.1:7777"
        ProxyPassReverse "http://127.0.0.1:7777"
</Location>

Header перезапись, которую я добавил, потому что приложение перенаправляет (в / app) сразу после того, как я вхожу в / adminMon go url - теперь страница загружается, но без файлов js / css - для каждого из них я получаю 404, я пробовал много разных RewriteRules но не могу понять.
Прямо сейчас я получаю, например, http://x.x.x.x/css/style.css - и это должно быть http://x.x.x.x/adminMongo/css/style.css (что работает правильно, если я вставлю этот URL-адрес в браузер).
Извините - я совсем хромаю в apache config;)

Есть идеи?

РЕШЕНО
Наконец решено - основная проблема была этот запрос для статуса c files были связаны с / - точно так же, как указал mottek. К счастью, adminMon go имеет параметр для контекста, поэтому после добавления контекста «adminMon go» все запросы должны передаваться следующим образом 127.0.0.1:7777/adminMongo
Теперь можно использовать перезапись и директиву My Location выглядит так:

<Location>
        RewriteEngine on
        RewriteRule "/adminMongo/$" "/adminMongo/app/connection_list" [L]
        RewriteRule "/adminMongo/(.*)$" "http://127.0.0.1:7777/adminMongo/$1" [L,P]
</Location>

возможно, это не лучшее решение, но, по крайней мере, оно работает;)

1 Ответ

0 голосов
/ 18 июня 2020

Ссылки на ваши файлы стилей / javascript определены в вашем приложении как http://x.x.x.x/css/style.css, что, как я полагаю, отлично работает, когда вы не используете обратный прокси. Таким образом, запросы файлов могут выполняться относительно /

. Используя обратный прокси-сервер таким образом, как вы его настроили, файлы должны запрашиваться относительно /adminMongo/, что соответствует вашему наблюдению, что с использованием URL-адреса http://x.x.x.x/adminMongo/css/style.css работает нормально.

Я могу придумать следующие решения:

  1. Отрегулируйте конфигурацию apache, определите выделенный виртуальный хост, затем настройте обратный прокси для нового виртуального хоста, чтобы вы не необходимо, чтобы в URL была включена часть adminMongo.
  2. Настройте пути в вашем приложении для загрузки ресурсов (css, javascript, ...) из /adminMongo/...
  3. Копировать ресурсы вашего приложения в каталог, где apache обслуживает файлы относительно URL-адреса /, например, до /var/www/html/css. В результате apache доставляет css, javascript и другой статический контент напрямую
...