rene_charbonnea
I'm new here

Apache vorschalten...

Hallo zusammen,

hiermit poste ich meinen ersten Beitrag in dieser wundervollen Community. Ich habe bis dato 1-2 mal hier gestöbert und bei der ein oder anderen Anfrage quer gelesen.

Ich möchte daher kurz die Gelegenheit nutzen ein paar Kleinigkeiten zu meiner Person zu sagen.


Ich arbeite für die HLP Informationsmanagement GmbH als Systemadministrator. Wir haben im Hause mehrere Firstspirit Server (Produktiv und Entwicklungssysteme) in Betrieb und haben diese bisher ohne Anbindung an die Microsoft ADS betrieben.


Bisher waren die Systeme direkt über Port 80 (die Firewall hat ein Port Remapping auf Port 8000 durchgeführt) von aussen erreichbar.


Intern haben wir weiterhin über Port 8000 zugegriffen. Mit der Umstellung auf Windows 7 ist allerdings aufgefallen, dass dieses Portremapping zu Problemen führt. Aus irgendeinem Grund bekamen die User ein Error 403 vom Webserver zurück wenn man die Webstart Applikation runterladen wollte.

Dies (und der Umstand das die FS-Server mit dem LDAP verbunden werden sollten) führte dazu, dass wir uns entschlossen dem integrierten Jetty Webserver einen Apache vorzuschalten. Dieser sollte einmal das Handling zwischen Port 80 und 8000 sowie das SSL Handling übernehmen.

Grundsätzlich haben wir mit dem vorschalten von Apache HTTP Webservern vor einen Servlet Container (in der Regel Tomcat) keine Probleme.


Dank dem Apache Modul mod_jk und der Unterstützung von AJP in nahezu jedem Servlet Container klappte dies auch bisher immer (so laufen bei uns etwa 10 Webserver).

Leider unterstützt Jetty das AJP bzw. mod_jk ja nur bedingt.

Aus diesem Grund war auch in der Firstspirit Admin Doku eine Beispielkonfiguration für Apache die mit Reverse Proxy arbeitet.

Leider habe ich mit Reverse Proxy noch nie gearbeitet und stehe auch (genau wie vor meinem Urlaub) gerade voll auf dem Schlauch was das angeht.

Daher meine Frage:

Hat hier schon jemand (erfolgreich!) einen Apache vor den Jetty geklemmt? Wenn ja, könnte ich dann mal Einblick in die Apache Konfig nehmen?


Denn ich würde das hier auch gerne umsetzen und wäre echt dankbar wenn mir da jemand helfen könnte. Sonst sitz ich hier wieder 2 Wochen und raufe mir nachher die Haare warum ich den "kleinen" Fehler XYZ übersehen habe.

Danke im voraus.

Grüße

René

0 Kudos
7 Replies
witt
I'm new here

Hallo Rene,

kannst du vielleicht deine aktuelle Konfig in Auszügen posten? Ich glaube, dass es in deinem Fall zielführender ist auf deine Konfig zu schauen und nicht anhand einer anderen etwas zu vergleichen.

Gruß,

Daniel

0 Kudos

Kein Problem. Smiley Happy

Also ich habe aus dem aktuellen Firstspirit Admin Handbuch die Konfig entnommen und angepasst:

/etc/apache2/sites-enabled/jetty:

<VirtualHost fsprod.hlp.de:80>
ServerName fsprod.hlp.de
ServerAlias fsprod
ServerAdmin webmaster@hlp.de
LogLevel warn
CustomLog /var/log/apache2/fs4.access.log combined
ErrorLog /var/log/apache2/fs4.error.log


ServerSignature off
UseCanonicalName off
AddDefaultCharset off
ProxyRequests off
RewriteEngine on ProxyPreserveHost on
DocumentRoot /opt/firstspirit4/web
DirectoryIndex index.html index.jsp index.php


<Location />
    order allow,deny
    allow from all
</Location>


# Protect configuration files.
<LocationMatch "\.htaccess|/WEB-INF/">
    order deny,allow
    deny from all
</LocationMatch>


# Protect FirstSpirit previews, to be accessible
# from Servlet-Engine only, not from Web-Browser.
<LocationMatch preview_cache>
    order deny,allow
    deny from all
    # All LAN addresses where Servlet-Engine is connecting from:
    allow from 127.0.0.1
    allow from 10.255.255.
    allow from 172.16.
</LocationMatch>


# status monitor for mod_proxy and balancer
<Location /balancer-manager>
    SetHandler balancer-manager
    order deny,allow
     deny from all
    # allow access from administation network only
    allow from 10.255.255.
    allow from 172.16.
</Location>


<Proxy balancer://fshttp>
# set to hostname of FirstSpirit Server (Jetty)
# and to port given by HTTP_PORT in fs-server.conf
BalancerMember http://localhost:8000
</Proxy>


# default WebApp
RedirectMatch ^/$ /fs4root/
# FirstSpirit WebApps
RewriteRule ^/(fs4root.*) balancer://fshttp/$1 [proxy,last]
RewriteRule ^/(fs4webmon.*) balancer://fshttp/$1 [proxy,last]
RewriteCond %{REQUEST_URI} !/preview_cache/
RewriteRule ^/(fs4preview.*) balancer://fshttp/$1 [proxy,last]
RewriteCond %{REQUEST_URI} !/preview_cache/
RewriteRule ^/(fs4webedit.*) balancer://fshttp/$1 [proxy,last]
RewriteRule ^/(fs4staging.*) balancer://fshttp/$1 [proxy,last]
</VirtualHost>

Wenn ich jedoch die URL http://fsprod.hlp.de aufrufe werde ich auf http://fsprod.hlp.de/fs4root/ umgeleitet und erhalte die folgende Meldung:

HTTP ERROR: 404


NOT_FOUND

RequestURI=/fs4root/


Powered by Jetty://


Das Verzeichnis fs4root existiert aber definitiv unterhalb des gesetzten DocumentRoot (/opt/firstspirit4/web).

Die allow from Einträge spiegel unsere beiden IP-Adressbereiche im Netzwerk wieder.

172.16.0.0/22

10.255.255.0/24

Soll ich noch den Rest der Apache Konfig posten?

Grundsätzlich erscheint mir das alles (mit den Kentnissen die ich über diese Art der Ankopplung eines Servlet Containers habe) logisch. Daher komme ich momentan nicht drauf wo das Problem liegt...

Gruß
René

0 Kudos

Hallo René,

bitte stelle sicher, dass in der fs-server.conf der Parameter WEBAPP_ROOT_PATH nicht eingetragen ist und füge die folgenden Parameter hinzu:

INTERNAL_SERVLET_ENGINE=1
WEBAPP_ROOT_URL=/fs4root

Prüfe dann erneut, ob das ganze funktioniert. Über eine positive Rückmeldung würde ich mich freuen... Smiley Wink

0 Kudos

Arrghhh, also so sah meine Konfig bisher aus.

#FIRSTspirit configuration info

###########################
# communication
###########################
HTTP_PORT=8000
SOCKET_PORT=1088
INTERNAL_SERVLET_ENGINE=1

###########################
# mail
###########################
mail.smtp=
mail.default-recipient=
mail.sender=fs4server

quickstart.0.memory=0
quickstart.0.encryption=0
quickstart.0.connection=HTTP
quickstart.0.type=0
quickstart.0.project=18606
quickstart.0.server=
quickstart.0.servletZone=
quickstart.count=4
quickstart.0.parameters=
quickstart.1.type=0
quickstart.0.port=0
quickstart.1.project=4003
quickstart.0.compression=0

hdd.limit=90
memory.outOfMemoryWarn=false
motd.show=false
hdd.max=0
memory.limit=95
memory.warn=false
hdd.warn=false
statistic.start=0

quickstart.1.parameters=
quickstart.1.compression=0
quickstart.1.server=
quickstart.1.memory=0
quickstart.1.connection=HTTP
quickstart.1.servletZone=
quickstart.1.encryption=0
quickstart.1.port=0

quickstart.3.parameters=
quickstart.3.server=
webstart.client.servletZone=
webstart.admin.port=0
quickstart.2.compression=0
quickstart.2.encryption=0
quickstart.3.servletZone=
quickstart.2.connection=HTTP
webstart.admin.connection=HTTP
quickstart.3.type=0
webstart.client.server=
quickstart.3.connection=HTTP
quickstart.2.servletZone=
webstart.admin.parameters=
quickstart.2.project=27092
quickstart.3.port=0
webstart.admin.server=
quickstart.3.encryption=0
webstart.admin.compression=0
webstart.admin.servletZone=
webstart.admin.encryption=0
webstart.client.connection=HTTP
webstart.client.parameters=
webstart.client.port=0
quickstart.2.memory=0
quickstart.2.parameters=
quickstart.3.project=25999
quickstart.3.memory=0
webstart.client.compression=0
quickstart.2.type=0
quickstart.2.server=
quickstart.2.port=0
webstart.client.memory=0
quickstart.3.compression=0
webstart.client.encryption=0
webstart.admin.memory=0

Da habe ich wohl einen kleinen aber feinen Eintrag (WEBAPP_ROOT_URL) übersehen. Jetzt klappt es ohne Probleme...

DAS ärgert mich nur aber wirklich maßlos... Smiley Sad

Grüße
René

P.S. Kann sein, dass ich mich eventuell nochmal melde wenn ich Probleme mit der SSL Konfig bekomme. Wobei das ja nun wieder nach unserem internen Standard mit mod_rewrite klappen sollte. Smiley Wink

0 Kudos

Hallo René,

es kann sein, dass der Parameter in der Dir vorliegenden Dokumentation auch nicht explizit erwähnt wird. Ich glaube also, dass Du den Parameter nicht übersehen hast, sondern die Dokumentation an dieser Stelle einfach nicht 100%ig gründlich ist.

Meines Wissens nach hat sich an dieser Stelle in der aktuellen Dokumentation etwas geändert, werde das aber noch mal nachprüfen.

Beste Grüße,

Daniel

0 Kudos

Hallo Daniel,

*puuuh* gut das du das nochmal gesagt hast.
Hab gerade in der "aktuellen" 2.19er Doku nachgeschaut.

Dort steht folgendes:

Bevor Apache konfiguriert wird, sollte die FirstSpirit-Konfiguration überprüft werden. In der Datei firstspirit4/conf/fs-server.conf darf der Parameter WEBAPP_ROOT_PATH nicht eingetragen sein und es muss der Parameter INTERNAL_SERVLET_ENGINE=1 definiert sein. Diese Konfiguration entspricht der Standardkonfiguration nach der Installation von FirstSpirit.

Hab ich wohl nochmal Glück gehabt. Smiley Wink

Aber trotzdem Danke für die (wie immer) sau schnelle und zielführende Hilfe. Sowas hab ich echt noch nie erlebt (im positiven Sinne)...

0 Kudos

Hallo nochmal an alle.


Nachdem jetzt die Vorschaltung des Apache grundsätzlich geklappt hat sehe ich das nächste "Problem".


Ich habe den Firstspirit Server über http://fsprod.hlp.de angesprochen und werde auch auf Port 80 begrüßt.

Sobald ich mich aber nun angemeldet habe steht in der Browserzeile http://fsprod.hlp.de:8000

Auch der Download des Webstart Clients läuft über Port 8000 ab.

Habe ich da etwas falsch verstanden? Ich ging davon aus, dass sämtliche Kommunikation über Port 80 abgefackelt wird um vom Apache transparent an den Jetty auf Port 8000 weitergeleitet wird.

War meine Auffassung da falsch? Falls nein, habe ich JETZT irgendwo vergessen eine Konfig anzupassen?

Denn für den User soll und muss alles transparent über Port 80 laufen und später dann über Port 443 (SSL verschlüsselt). So funktioniert das ganze ja auch wenn ich mod_jk nutze und einen Apache vorschalte.

0 Kudos