Прокси Apache к Glassfish - Как подавить подпапку в URL?

У меня есть единственный сервер Linux рабочий Apache/2.2.24, выполняющий оба HTTP/HTTPS наряду с Glassfish 3.1.2 сервера, слушающие на порте 8080.

Glassfish запускает единственное развертываемое приложение, которое имеет подпапки для отдельных веб-сайтов, например:

http://gfish:8080/rootSite
http://gfish:8080/rootSite/Site2
http://gfish:8080/rootSite/Site3
http://gfish:8080/rootSite/Site4

В Apache vhosts.conf файл весь трафик для портирования 80 из каждого Виртуального Хоста переписывается к 443 следующим образом:

RewriteEngine on
RewriteCond   %{SERVER_PORT}  !^443$
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.site2.com/rootSite/Site2$1 [L,R]

В Apache ssl.conf файл каждый виртуальный хост настроен для исчезновения к Glassfish следующим образом:

RedirectMatch ^/$ https://www.site2.com/rootSite/Site2$1
ProxyPass /rootSite/ http://gfish:8080/rootSite/
ProxyPassReverse /rootSite/ http://gfish:8080/rootSite/

Конечный результат для веб-пользователя - это, когда они перешли к http://www.site2.com они - redircted к HTTPS и проксированный к Glassfish, приводящему к ним наблюдение: https://www.site2.com/rootSite/Site2

Это - текущая рабочая конфигурация.

Желаемые результаты состоят в том, что веб-пользователь не видит подпапку и обращается на сайт как: https://www.site2.com

Что самый эффективный путь состоит в том, чтобы выполнить это, учитывая существующую конфигурацию?

Править:

После того, как некоторые играющие вокруг этого появляются, что часть конфигурации в ssl.conf файле является ненужной. Я обрезал его вниз к следующему:

ProxyRequests Off
<Proxy *>
  Order deny,allow
  Allow from all
</Proxy>
ProxyPass / http://gfish:8080/rootSite/Site2/
ProxyPassReverse / http://gfish:8080/rootSite/Site2/`

С этой новой конфигурацией я могу опустить/rootSite/Site2/от URL, как желаемый однако, все форматирование CSS и изображения повреждаются.

0
задан 5 December 2014 в 00:42
1 ответ

В файле Apache vhosts.conf я меняю правило перезаписи следующим образом:

RewriteRule ^ (. *) $ Https://www.site2.com $ 1 [L, R]

В файле ssl.conf я сократил его до:

ProxyRequests Off

ProxyPass / rootSite / http: // gfish: 8080 / rootSite /
ProxyPassReverse / rootSite / http: // gfish: 8080 / rootSite /

Этот первый набор операторов Proxy был добавлен, потому что Site2 полагается на CSS и файлы изображений с rootSite для отображения страниц.

ProxyPass / http : // rootSite: 8080 / rootSite / Site2 /
ProxyPassReverse / http: // rootSite: 8080 / rootSite / Site2 /

Второй набор операторов Proxy связывает внешний корень веб-сайта с внутренним корнем Glassfish Site2 .

Эта конфигурация дала мне желаемый результат: внешние пользователи увидели https://www.site2.com/

НОВАЯ ПРОБЛЕМА

Я передал эту конфигурацию разработчикам для тестирования, и она оказалась что в их коде есть абсолютные URL-адреса, которые Вы не хотите меняться. В этом случае на домашней странице есть форма входа, а действие формы указывает на абсолютный URL-адрес http://www.site2.com/rootSite/site2/login.xhtml Любой веб-пользователь, нажимающий на кнопка отправки формы затем перенаправляется на сайт, снова обнаруживая нежелательные подпапки в URL.

Решение, к которому я стремился, - реализовать и настроить mod_proxy_html .

С этой целью Я скомпилировал необходимую информацию в Apache для включения модуля, а затем создал файл proxy_html.conf со следующим содержимым:

ProxyHTMLLinks a href
ProxyHTMLLinks area href
ProxyHTMLLinks link href
] ProxyHTMLLinks img src longdesc usemap
ProxyHTMLLinks object classid codebase data usemap
ProxyHTMLLinks q cite
ProxyHTMLLinks blockquote cite
ProxyHTMLLinks ins cite
ProxyHTMLLinks in cite
ProxyHTMLLinks 12 Proxy input action
ProxyHTMLLinkSinks del cite src usemap
Профиль головы ProxyHTMLLinks
ProxyHTM LLinks base href
ProxyHTMLLinks script src для

ProxyHTMLEvents onclick ondblclick onmousedown onmouseup \
onmouseover onmousemove onmouseout onkeypress \
onkeydown onkeyup onmouseout onkeypress \
onkeydown onkeyup onfocus onblur onload \
onsemit onunchange
onunsending
onunsend on 1163975] файл ssl.conf Я настроил конфигурацию прокси следующим образом:

ProxyPass / rootSite / http: // gfish: 8080 / rootSite /
ProxyPassReverse / rootSite / http: // gfish: 8080 / rootSite /

ProxyRequests отключен
ProxyPass / http: // gfish:8080 / rootSite / Site2 /

ProxyPassReverse /
ProxyHTMLEnable On
ProxyHTMLURLMap http: // gfish: 8080 / rootSite / Site2 / /
ProxyHTMLURLMap / /
< / Location>

К сожалению, даже с этим я не достигаю желаемого результата переписывания ссылки действия формы.

Ввод и понимание более чем приветствуются.

0
ответ дан 24 November 2019 в 08:53

Теги

Похожие вопросы