Заголовок запроса (атрибут хоста) потерян / сброшен с WebSeal на веб-сервер Apache

URL ( https://xyz.abc.com/cc), когда балансировщик нагрузки видит / cc, он перенаправляет запрос в WebSeal (Revers Proxy server).

Добавить / установить WebSeal (узел заголовка: xyz.abc.com) и переслать запрос на Apache2 (веб-сервер). В веб-печати у нас есть стандартное соединение (/cc), которое обработает запрос от LB.

Когда запрос приходит к Apache2, он теряет значение заголовка HOST (xyz.abc.com) и сбрасывает его на имя сервера Apache2 (xyzapacheweb1).

Теперь, наконец, запрос переходит от apache2 к Liferay Portal (6.2) и показывает URL (xyzapacheweb1) вместо (xyz.abc.com)

Liferay нужно имя HOST при обращении к веб-серверу, поэтому мы должны жестко закодировать URL (в файле свойств или в apache2)

Мы хотим удалить значение Hard-Code и передать динамическое имя хоста, чтобы мы могли использовать несколько URL-адресов для отдельных приложений.

Примечание. Когда у нас нет изображения WebSeal, оно сохраняет имя HOST. т.е. Apache2 показывает фактическое доменное имя (xyz.abc.com)

Можете ли вы помочь мне решить эту проблему?

Дайте мне знать, если вам нужно больше информации.

2 ответа

Решение

Я придумал два решения.

  1. Временный:

    • Установите пользовательский атрибут заголовка в запросе от WebSeal, т.е. domain-host-name. Из LB -> WebSeal установите значение хоста для этой переменной.
    • Веб-сервер Apache может получить это значение, потому что это не заголовок запроса по умолчанию. На основе значения domain-host-name Установите значение HOST заголовка из веб-сервера Apache для Liferay.
    • удалите свойство web.server.host.name в Liferay, оно автоматически получит значение HOST (которое было установлено Apache).

      Установите xyz.abc.com, если для имени домена-хоста установлено значение xyz.abc.com

      SetEnvIf домен-хост xyz.abc.com HAVE_MyRequestHeader RequestHeader установить хост xyz.abc.com env=HAVE_MyRequestHeader

      Установите abc.xyz.com, если для имени домена-хоста установлено значение abc.xyz.com

      SetEnvIf домен-хост abc.xyz.com HAVE_MyRequestHeader_1 RequestHeader установить хост abc.xyz.com env=HAVE_MyRequestHeader_1

Это временное решение, потому что здесь мы должны жестко закодировать проверку имени хоста в Apache. Так что, если есть новый URL, то вы должны настроить его в Apache.

  1. Постоянный:

    • WebSeal имеет концепцию виртуального соединения. Где можно настроить webseal, чтобы играть роль виртуального хостинга.

Пожалуйста, обратитесь: http://www-01.ibm.com/support/knowledgecenter/SSPREK_6.1.1/com.ibm.itame.doc_6.1.1/am611_webseal_admin642.htm%23vhost-scenario1?lang=en

Дайте мне знать, если вы столкнулись с подобной проблемой типа, я могу помочь решить ее.

Если вы используете mod_proxy для пересылки с apache на tomcat, вам не хватает опции

ProxyPreserveHost On

Это из-за пересылки через http. Если вы используете ajp, это автоматически учитывается протоколом.

Я не уверен в эквивалентном варианте для webseal, хотя, может быть, apache поможет вам найти его

Другие вопросы по тегам