используя Apache для прокси-сервера Tomcat и не может сделать sendRedirect - PullRequest
1 голос
/ 21 февраля 2012

Я использую Apache в Linux, чтобы проксировать все запросы сайта к tomcat, чтобы я мог использовать виртуальный хостинг и использовать https. Мое веб-приложение в tomcat - / epub, но я настроил apache proxypass и proxypassreverse для сопоставления / с http // localhost: 8081 / epub /

Я делаю все это, чтобы зайти на свой сайт через Facebook.

(ПРИМЕЧАНИЕ: это не настоящий сайт, и мне пришлось настроить виртуальный хостинг / etc / hosts и apache для моего sitename, который я зарегистрировал на Facebook.)

В tomcat server.xml я установил элемент Connector следующим образом:

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
       proxyPort="80"
       proxyName="andyssite2.com"/>

Но ничего не настроено для пула общих потоков исполнителя для этого порта.

Вот что не работает:

ошибка 1) когда я захожу в свой loginservlet, я проверяю, существует ли сессия. Если нет, я создаю его и сохраняю параметр запроса "hash" в качестве атрибута сеанса. Затем перенаправьте на Facebook в соответствии со схемой OAuth-сервера. Когда facebook перенаправляет обратно на мой loginservlet, HttpSession существует, но атрибут "hash" теряется. (Я бы лучше сохранил в сеансе, чем в куки.)

ошибка 2) Затем я получаю остальную информацию о пользователе Facebook и перенаправляю на "/index.html". Браузер показывает мой URL как "http://andyssite2.com/index.html#_=_", и это вызывает проблемы, потому что мой javascript, загруженный index.html, не подготовлен для хэша _ = _, который каким-то образом вступает в игру. Я также попытался перенаправить на свой сайт, используя абсолютный URL, и получил та же проблема с хешем _ = _ и мой вопрос заключается в том, что вызывает добавление этого хеша spurios.

У меня последняя версия Apache для Centos6.

Andy

1 Ответ

1 голос
/ 21 февраля 2012

У меня очень похожая конфигурация с apache в качестве внешнего интерфейса и tomcat за ним, на котором работает портал liferay (также работает CentOS).

Лучший способ, который я нашел в исследованиях, - это использовать mod_proxy_ajp:

httpd.conf:

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass / ajp://localhost:8009/

server.xml:

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />

Вы можете применить свою конфигурацию поверх моей, надеюсь, это исправит вашу проблему.

...