Как да имам 2 различни сървъра за уеб/приложения за един и същ домейн, но различен контекстен път?

Изпълнявам стандартно PHP приложение в моя домейн и го зададох на www.johndoe.com/p/

Сега порт 80 очевидно се обслужва от този HTTP сървър (Apache, не Tomcat). Освен това инсталирах Wildfly 8.2 на този сървър на порт 8000. Как мога да използвам приложения Wildfly WAR в същия домейн, напр. www.johndoe.com/w/?

Сигурен съм, че има начин за пренасочване на заявките /w/ към сървъра на Java EE и /p/ да се поддържа от Apache, нали?

Предполагам, че mod_proxy (http gateway) и mod_proxy_ajp са прости решения. Може ли някой да помисли върху моите изисквания и функционалността на mod_proxy/ajp?

ProxyPass /w ajp://localhost:8000/w
ProxyPassReverse /w http://www.johndoe.com/w

Не изисквам балансиране на натоварването или нещо друго сложно. Просто разделянето на двата контекста. Само порт 80 е достъпен от интернет.

Благодаря ти.


person feder    schedule 09.03.2015    source източник
comment
Ако въведете www.johndoe.com/p/ или www.johndoe.com/w/ в браузъра, той трябва и ще се обслужва от apache и ако въведете същото, но със специфичен порт (www.johndoe.com:8000/p/), той трябва да се обслужва от wildfly   -  person winston86    schedule 09.03.2015
comment
@winston86 Да, така е. Да, но на моя сървър порт 8000 е затворен. Така че трябва да мина през 80. Просто питам дали е толкова просто, колкото да напиша тези 2 ProxyPass реда на Apache HTTP сървър (и активен AJP в Wildfly).   -  person feder    schedule 09.03.2015
comment
Няма как да стане. Wildfly трябва да слуша някакъв интерфейс и порт. Трябва да разрешите в настройките на вашата защитна стена да приема и връща данни през порт 8000. Можете да пренасочите www.johndoe.com/p/ към www.johndoe.com:8000/p/, но пакетите ще бъдат премахнати поради защитната стена.   -  person winston86    schedule 09.03.2015
comment
@winston86 Защо трябва да е така? Това е същият сървър. След като заявката е в рамките на защитната стена, със сървъра Apache, тя може да използва всеки протокол и име на хост. напр. ajp://localhost:8000/w Също така се опитвам да маршрутизирам за johndoe.com/w и не за ... doe.com/p   -  person feder    schedule 09.03.2015
comment
Е, можете да опитате да пренасочите чрез loopback интерфейс, но проблемът все още е същият, трябва да разрешите 8000 порт на интерфейса в защитната стена и да настроите wildfly да го слуша. Но ако трябва да взаимодействате с wildfly, изходните пакети ще бъдат премахнати.   -  person winston86    schedule 09.03.2015


Отговори (1)


Добре. Ето резолюцията.

Добавих към Wildfly 8.2 standalone.xml следния ajp-слушател...

<server name="default-server">
    <http-listener name="default" socket-binding="http"/>
    <ajp-listener name="ajp" socket-binding="ajp"/>
    <host name="default-host" alias="localhost">
    <location name="/" handler="welcome-content"/>
        <filter-ref name="server-header"/>
        <filter-ref name="x-powered-by-header"/>
    </host>
</server>

... и го свържете към гнездото ...

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
    <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
    <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
    <socket-binding name="ajp" port="${jboss.ajp.port:28009}"/>
    <socket-binding name="http" port="${jboss.http.port:28080}"/>
    <socket-binding name="https" port="${jboss.https.port:28443}"/>
    <socket-binding name="txn-recovery-environment" port="4712"/>
    <socket-binding name="txn-status-manager" port="4713"/>
    <outbound-socket-binding name="mail-smtp">
        <remote-destination host="mail.johndoe.com" port="25"/>
    </outbound-socket-binding>
</socket-binding-group>

Извикайте service wildfly reload или service wildfly restart. Към Wildfly слушане на AJP заявки.

Накрая добавете към вашия файл http.conf на вашия домейн на виртуален хост Apache следното:

ProxyPass /w ajp://127.0.0.1:28009/w
ProxyPassReverse /w ajp://127.0.0.1:28009/w

Също така за Apache, рестартирайте с service apache2 reload.

Внимание. В Parallels Plesk конфигурационният файл на виртуалния хост трябва да се редактира в /var/www/vhosts/system/johndoe.com/conf/http.conf, а НЕ в /var/vhosts/johndoe.com/conf/http.conf

person feder    schedule 15.03.2015
comment
Много ясно и точно по същество. При мен се получи идеално - person alexander; 26.12.2016