Apache
From MapbenderWiki
Contents |
UTF-8 Zeichensatz
Je nach Apache-Konfiguration schickt der Webserver auf alle Anfragen einen HTTP-Response-Header, der die Zeichensatzangaben der HTML-Meta-Tags überschreibt.
Folgende Maßnahmen können Abhilfe schaffen:
- AddDefaultCharset off
- AddType "text/html" html
oder:
- AddType "text/html; charset=UTF-8" html
OWSPROXY
Der OWS-Proxy arbeitet als Vermittler zwischen dem Web-Browser des Benutzers und dem Mapbender. Dem Browser des Benutzers wird dabei eine URL-Adresse übermittelt, die eine eindeutige Kennung (Session-ID) der Sitzung enthält (vervollständigen? UR?)
Beipiel einer URL
http://localhost/owsproxy/52cc6eef950befe51c6f375f7939efb8/f1ec84c35895eb30bde12321e8c62098? VERSION=1.1.1& REQUEST=GetMap& SERVICE=WMS& LAYERS=my_polygons,my_lines,my_points& STYLES=,,& SRS=EPSG:4326&BBOX=-106.8888888888889,-80,80.8888888888889,89& WIDTH=500& HEIGHT=450& FORMAT=image/png&BGCOLOR=0xffffff& TRANSPARENT=TRUE& EXCEPTIONS=application/vnd.ogc.se_inimage
Apache
Im Apache Web-Server muss das Modul "alias_module" (mod_alias.so) installiert und geladen sein. Da dieses Modul zur Basis-Konfiguraton des Web-Servers gehört sind an dieser Stelle i.d.R keine Anpassungen notwendig.
Konfiguration
Der Web-Server muss die Aufgabe übernehmen, die Session-ID aus der angeforderten URL zu extrahieren und als CGI-Parameter in den Mapbender-Aufruf einzufügen. Hierzu wird die RedirectMatch-Anweisung (Apache 1.3 bzw. Apache 2) des Web-Servers verwendet.
Je nach Version des Webservers (1.3 oder 2) muss diese Anweisung in eine andere Datei eingetragen werden:
Apache 1.3
Unter Apache 1.3 ist die Konfigurationsdatei zumeist als /etc/apache/httpf.conf angespeichert. Der RegEx für den Apache 1.3.x muss noch formuliert werden.
Apache 2
Unter Apache 2 findet sich die mögliche Konfigurationsdatei i.d.R. im Verzeichnis /etc/apache2/sites-available/. Handelt es sich um eine Neuinstallation, dann findet sich dort die Datei default. Wurden bei der Server-Konfiguration bereits mehrere virtuelle Web-Server eingerichtet (z.B. für Subdomains), dann finden sich hier häufig die Konfigurationsdateien der einzelnen Server. In diesem Fall müsste nachgesehen werden, welcher virtuelle Server für die Installation des Mapbenders eingrichtet wurde und die Konfiguration des Proxys dort vorgenommen werden.
Die Anweisung
Die Anweisung für die Extraktion der Session-ID lautet
- mod_alias
- mod_proxy
Sie setzt sich aus drei Bestandteilen zusammen:
RedirectMatch ^VON_AUSDRUCK& ZU_AUSDRUCK
Bsp.: http://wms1.ccgis.de/<md5_1>/<md5_2>
VON_AUSDRUCK:
Jede URL-Anfrage, die "owsproxy" beinhaltet,
gefolgt von irgendeinem Zeichenein (.),
einer Zeichenkette ([^i][\d\w]+),
die nicht mit "i" beginnt [^i] und
aus mindestens zwei oder Buchstaben/Ziffern besteht [\d\w]+
und in der Variablen $1 gespeichert wird ()
einen trennenden "Slash" beinhaltet \/
einer Zeichenkette ([^i][\d\w]+),
aus mindestens einem Buchstaben/Ziffer besteht [\d\w]+
und in der Variablen $1 gespeichert wird ()
und dann endet
ZU_AUSDRUCK:
Eine URL-Anfrage, die den VON_AUSDRUCK erfüllt wird immer umgeschrieben in:
http://localhost/owsproxy/http/index.php?sid=
gefolgt von Variable $1 (s. Beschreibung VON_AUSDRUCK, Z. 6)
gefolgt von &wms=
gefolgt von Variable $2 (s. Beschreibung VON_AUSDRUCK, Z. 10)
gefolgt von ?
gefolgt von den restlichen CGI-Parametern, die der Server automatisch anhängt.
Aus dem oben genannten Beispiel wird nach dem Umleiten:
ttp://localhost/owsproxy? sid=52cc6eef950befe51c6f375f7939efb8& wms=f1ec84c35895eb30bde12321e8c62098& ?VERSION=1.1.1& REQUEST=GetMap& SERVICE=WMS& LAYERS=my_polygons,my_lines,my_points& STYLES=,,& SRS=EPSG:4326&BBOX=-106.8888888888889,-80,80.8888888888889,89& WIDTH=500& HEIGHT=450& FORMAT=image/png&BGCOLOR=0xffffff& TRANSPARENT=TRUE& EXCEPTIONS=application/vnd.ogc.se_inimage
Somit wird nun die sid und der wms-Dienst als Parameter an den Mapbender weiter geleitet, der in diesem Beispiel auf localhost eingerichtet ist.
Zu beachten:
- Die nachfolgenden CGI-Parameter (der Text in der URL hinter dem "?") werden von RedirectMatch nicht beachtet/bearbeitet sondern nur angehängt
- (Technisch) Der Server fügt dem ZU_AUSDRUCK automatisch die cgi-Parameter an den ZU_AUSDRUCK. Hierbei bleibt das ursprüngliche ? des VON_AUSDRUCKs erhalten und findet sich am Anfang des 3. CGI-Parameters wieder (?VERSION). Programmierer sollten dies beachten und dieses Fragezeichen frühzeitig entfernen.
(vervollständigen? UR?) In diesem Fall zielt der regex auf das virtuelle Verzeichnis:
Alias /owsproxy/ "/data/svn/owsproxy/"
UMN Mapserver als WMS-Client hinter Proxy
Fallskizze
Ein UMN Mapserver wird innerhalb des cgi-bin-Verzeichnisses eines Apache2 betrieben. Der Server befindet sich in einer DMZ, die einen Zugriff auf Ressourcen im Internet nur über einen Proxy zuläßt. Im Mapfile ist dem UMN Mapserver ein anderer WMS eingetragen. Diesen kann er jedoch nicht abfragen, da der Proxy den direkten Zugriff verweigert.
Lösung
Dem UMN Mapserver muß beigebracht werden, seine Anfragen nicht direkt an den externen WMS sondern an den Proxy zu richten, der die Anfrage dann an den WMS weiterreicht. Proxyeinstellungen für den UMN Mapserver werden über den Apache geregelt, da sich der Mapserver ja in dessen cgi-bin befindet.
Folgende Einstellungen (Pfadangaben am Beispiel für Ubuntu 6.06 "Dapper Drake" LTS) weisen dem Apache und damit dem UMN Mapserver die Proxyeinstellungen zu:
- Entsprechende Proxy-Module im Apache2 laden:
# ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load # ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
- Proxy im Apache2 eintragen:
# vi /etc/apache2/apache2.conf Folgende Zeile am Ende einfügen, Host und Port anpassen, kein trailing slash: ProxyRemote http http://proxy.intern.domain:8080 Apache2 neu starten: # /etc/init.d/apache2 restart
Wichtig: Diese Einstellungen passen NUR das Proxyverhalten des Apache2 bzw. des UMN an, der in der Apache2-Umgebung läuft. Proxyeinstellungen für PHP bleiben davon unberührt! Proxyeinstellungen für PHP (z.B. für fopen() u.s.w) müssen in PHP selbst vorgenommen werden!

