Как мне настроить сервер apache для обслуживания статического контента и перенаправления всего другого трафика на второй хост? - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть Apache (2.4), работающий локально, обслуживающий порт 80, и я хотел бы, чтобы он напрямую обслуживал некоторый статический контент (css / js / etc). У меня есть сервер weblogic, работающий через порт 8007, который будет обслуживать все динамические веб-страницы. Мне бы хотелось, чтобы часть статического контента передавалась напрямую с сервера Apache, а все остальные URL-адреса передавались на сервер weblogic. Все статическое и динамическое содержимое должны иметь один и тот же корневой контекст (/ myRoot). Я пытаюсь использовать mod_proxy. Вот текущая соответствующая конфигурация в httpd.conf, которую я попробовал (предположим, localhost.mydomain.com соответствует 127.0.0.1):

ServerName localhost.mydomain.com:80
...
ProxyRequests On
ProxyVia On
...
ProxyPass "/myRoot" "http://localhost.mydomain.com:8007/myRoot"
ProxyPassReverse "/myRoot" "http://localhost.mydomain.com:8007/myRoot"

Мне нужно, чтобы статический URL-адрес контента был таким, и он поступал непосредственно из Apache: http://localhost.mydomain.com/myRoot/static

Приведенная выше конфигурация позволяет мне правильно подключаться к серверу weblogic, работающему через порт 8007. Однако я изо всех сил пытаюсь получить статический контент с веб-сервера Apache. Я могу получить контент из htdocs с сервера apache, но если я помещу каталог, такой как / htdocs / myRoot / static, статический контент все равно будет отправляться на сервер weblogic.

1 Ответ

0 голосов
/ 02 апреля 2019

Я нашел это работает.все, что с / myRoot, отправляется на сервер приложений, если только оно не начинается с / myRoot / enterprise / js / dojo, которые все идут в каталог htdocs.В htdocs я поместил папку /apache/htdocs/myRoot/enterprise/js/dojo.

ProxyPassMatch ^/myRoot/(enterprise)/(js)/(dojo).* !
ProxyPass "/myRoot" "http://localhost.mydomain.com:8007/myRoot"
ProxyPassReverse "/myRoot" "http://localhost.ntrs.com:8007/myRoot"

К сожалению, я также обнаружил, что мне, вероятно, нужно перейти на использование OHS, а не apache, чтобы веб-сервер работал с weblogicправильно, поэтому, вероятно, возникнут другие проблемы с настройкой up = (.

Редактировать: настройка OHS была проще, чем я. Пришлось отследить некоторые проблемы с запуском сервера, но потом я просто добавил это в mod_wl_ohs.conf и добавилdojo в каталоге htdocs напрямую, ниже regex будет совпадать с / myRoot, если только за ним не следует enterprise / js / dojo. regex сбивают с толку в OHS / Apache - по какой-то причине не нужно экранировать /, поэтому пришлось потрудиться, чтобы получитьрегулярное выражение справа.

<IfModule weblogic_module>
    <LocationMatch "^/myRoot/((?!enterprise/js/dojo).)*$">
      WLSRequest On
      WebLogicHost localhost.mydomain.com
      WebLogicPort 8007
    </LocationMatch>      
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...