Problem, Frage
Folgendes Setup: IHS-Webserver mit konfiguriertem Dispatcher-Modul, das wiederum auf eine Websphere-Anwendungsserver-Renderfarm verweist, auf der eine CQ-Instanz ausgeführt wird. Ein Klassen- oder JSP-Skript in CQ ruft die Methode response.sendRedirect()
auf, die zu einer falschen Umleitung führt: der interne Servername und Port des Websphere-Anwendungsservers, der von außen nicht erreichbar ist, ist offen in der Speicherort
- Antwort-Kopfzeile sichtbar, die für die eigentliche Umleitung verwendet wird.
Die eigentliche Ursache für dieses Problem ist Websphere selbst, da IBMs Implementierung der Methode HttpServletResponse#sendRedirect()
direkt von benutzerdefinierten Anforderungs-Kopfzeilen beeinflusst wird, die standardmäßig von Webspheres IHS-Plugin generiert werden. Dies wird als ein IBM Anbieter-Lock-in-Effekt-Problem angesehen.
Auflösung, Antwort
Mit der Nutzung von mod_headers
auf dem IHS-Webserver können Websphere-spezifische Kopfzeilen an den App-Server übergeben werden, indem solche Kopfzeilen mit der RequestHeader
-Direktive hinzugefügt werden. Darüber hinaus müssen diese benutzerdefinierten Kopfzeilen in der Dispatcher-Konfiguration explizit zugelassen werden, da diese benutzerdefinierten Kopfzeilen andernfalls ignoriert werden.
Beispiel:
- Öffentliche Domäne: http://www.mydomain.com.
IHS-Konfiguration.
Bearbeiten Sie die Konfigurationsdatei httpd.conf
des IHS-Webservers und gehen Sie folgendermaßen vor:
- Stellen Sie sicher, dass das Modul
mod_headers
vorhanden und geladen ist - Fügen Sie WAS-spezifische Header mit der
RequestHeader
-Direktive hinzu
Beispiel (Auszug aus httpd.conf
):
... LoadModule headers_module modules/mod_headers.so ... <Directory /> <IfModule disp_apache2.c> # set custom Websphere headers RequestHeader set $WSSN www.mydomain.com RequestHeader set $WSSP 80 SetHandler dispatcher-handler </IfModule> Options FollowSymLinks </Directory>
Dispatcher-Konfiguration
Auf Dispatcher-Ebene muss die Liste der oben konfigurierten Anforderungsheader der Liste der Client-Header hinzugefügt werden, die der Dispatcher in diesem Fall an die definierte Renderfarm Websphere-Anwendungsserver weiterleitet.
Führen Sie die folgenden Schritte aus:
- Bearbeiten Sie die Konfigurationsdatei
dispatcher.any
- Suchen Sie den Abschnitt
/clientheaders
und fügen Sie zusätzliche Header hinzu, die eingefügt werden sollen - IHS neu starten
Beispiel (Auszug aus dispatcher.any
):
... /clientheaders { ... "$WSSN" "$WSSP" } ...
Websphere-Konfiguration
Der Websphere-Header $WSSP
gibt den Port an und $WSSN
definiert den Hostnamen, der verwendet werden soll, wenn response.sendRedirect()
in Websphere aufgerufen wird. Darüber hinaus wird der im Header $WSSP
angegebene Port auch zum Zuordnen des virtuellen Hosts in Websphere verwendet.
Verbinden Sie sich mit der Administrationskonsole von Websphere und gehen Sie folgendermaßen vor:
- Navigieren Sie zu
Environment> Virtuelle Hosts
- Wählen Sie die Konfiguration des virtuellen Hosts aus, die für CQ verwendet wird
- Klicken Sie auf
Host-Aliase
- Fügen Sie Port
80
hinzu - Starten Sie Websphere bei Bedarf neu
HINWEIS: Je nach Konfiguration müssen möglicherweise mehr Websphere-spezifische Header hinzugefügt werden. Dieses Dokument beschreibt Websphere-spezifische Header und ihre Bedeutung.
Herunterladen