Zum Hauptinhalt springen

URL Rewrite / Reverse Proxy einrichten

Bei der Installation von MapEdit Mobile, MapEdit Portal oder MapEdit TileServer kann es notwendig sein für den IIS ein URL-Rewrite/ Reverse Proxy einzurichten.

Das ist dann notwendig, wenn man den Port 8080 von Tomcat/Wildfly nicht freigeben will, oder kann. Zudem, wenn die i.d.R. notwendige SSL-Verschlüsselung und Einbindung eines dafür notwendigen Zertifikates am IIS/Webserver eingerichtet wird.

Folgende Voraussetzungen müssen erfüllt sein

  • der IIS benötigt das allgemeine HTTP-Feature: HTTP-Umleitung
  • URL-Rewrite muss installiert sein
  • Application Request Routing muss installiert und aktiviert sein
  • Server Variablen HTTP Encode ist aktiviert
  • es existieren die Servervariablen: HTTP_X_Real_IP, HTTP_X_Original_Host
  • es ist die folgende Servervariable definiert (falls keine Vektordaten in Mobile angezeigt werden und http mit https vermischt wird, ggfs. zusätzlich in den Umleitungsregeln definieren): HTTP_X_Forwarded_SSL
  • es ist ein gültiges 3-stufiges Zertifikat für die Website definiert, z.B. für mobile-kunde.mapedit.de

Installation

Die Systemvorraussetzungen IIS für MapEdit prüfen und Grundinstallation von MapEdit Mobile, Portal, TileServer durchführen. Anschließend müssen die zwei Erweiterungen für den IIS von Microsoft installiert werden.

Downloadlinks siehe oben:

Installationsreihenfolge

Zuerst URL Rewrite installieren und im Anschluss die Application Request Routing.

Alternativ haben wir im Software Repository Downloadbereich die Setups und auch Beispiele für die Einstellungen in der web.config bereitgestellt.

Download URLrewrite Verzeichnis

Konfiguration im IIS

Application Request Routing aktivieren

Nach der Installation der Microsoft IIS Erweiterungen im IIS muss das Application Request Routing aktiviert werden. Es befindet sich im IIS Manager direkt oben am Server, oder ist auf der Webseite einzustellen.

Application Request Routing Cache ➝ Rechte Seite ➝ Server Proxy Settings

IIS Application Request Routing aktivieren

Dort den Haken bei Enable Proxy aktivieren

Server Variablen HTTP encode aktivieren

Im IIS das Icon URL Rewrite auf der Default Webseite öffnen. Hier kann man die Server Variablen einsehen.

Server Variablen

Auf der rechten Seite auf Add, um diese beiden hinzuzufügen:

HTTP_X_Original_Host

HTTP_X_Real_IP

HTTP_X_Forwarded_SSL

Server Variable hinzufügen

Info

Über diesen Webserver wird das MapEdit Mobile nur aufgerufen, dieser Server steht in der DMZ. Von hier aus werden die Anfrage weiter an den Applikationsserver geleitet. Auf dem Applikationsserver ist MapEdit Mobile mit dem WildFly konfiguriert.

Für die Web Konfigurationen gilt folgendes:

Auf dem WebServer sind die Umleitungen für mapedit-core, mapedit-web und TileServer definiert. In jedem dieser Ordner befindet sich eine entsprechende web.config

Web.config anpassen

Nachdem diese beiden Variablen hinzugefügt wurden, muss die web.config des Servers angepasst werden. Diese befindet sich i.d.R. in dem Verzeichnis:

web.config

Achtung

Bitte zuerst eine Sicherung der Datei machen.

Beispiel / Vorlagen

mapedit-core

web.config
<rules>
<!-- place this file in a folder named "mapedit-core" in "C:\inetpub\wwwroot\" folder -->
<rule name="ReverseProxyInboundMapEditCore" enabled="true" stopProcessing="true">
<match url="(.*)" />
<!-- adjust this URL to match WildFly server name and port -->
<action type="Rewrite" url="http://localhost:8080/mapedit-core/{R:1}" />
<serverVariables>
<!-- add this server variables in IIS to allowed server variables in URL Rewrite view -->
<set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
<set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
<set name="HTTP_X_Forwarded_SSL" value="{HTTPS}" />
</serverVariables>
</rule>

mapedit-web

web.config
<rule name="ReverseProxyInboundMapEditMobile" enabled="true" stopProcessing="true">
<match url="(.*)" />
<!-- adjust this URL to match WildFly server name and port -->
<action type="Rewrite" url="http://localhost:8080/MapEdit/{R:1}" />
<serverVariables>
<!-- add this server variables in IIS to allowed server variables in URL Rewrite view -->
<set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
<set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
<set name="HTTP_X_Forwarded_SSL" value="{HTTPS}" />
</serverVariables>
</rule>

TileServer

web.config
<rule name="ReverseProxyInboundTileServer" enabled="true" stopProcessing="true">
<match url="(.*)" />
<!-- adjust this URL to match WildFly server name and port -->
<action type="Rewrite" url="http://localhost:8080/TileServer/{R:1}" />
<serverVariables>
<!-- add this server variables in IIS to allowed server variables in URL Rewrite view -->
<set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
<set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
<set name="HTTP_X_Forwarded_SSL" value="{HTTPS}" />
</serverVariables>
</rule>

Das Prinzip kann man auch für WMS Abfragen verwenden um so die Angaben von Karten und Pfaden auf dem Server zu verbergen.

web.config
<rule name="ReverseProxyInboundRuleWMS" stopProcessing="true">
<match url="wms" />
<action type="Rewrite" url="http://servername/cgi-bin/mapserv.exe?&amp;Map=c:%5Capp%5Cmaps%5Cwmskarte.map" />
<serverVariables>
<set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
<set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
</serverVariables>
</rule>
Beispiel:

Externe WMS URL: https://gis.kunde.de/wms?Request=GetCapabilities&Service=WMS&Version=1.3.0

Interne Server URL: http://servername/cgi-bin/mapserv.exe?Map=c:\app\maps\wmskarte.map

Optionale ausgehende Regel im IIS definieren:

Die installierten Module Application Request Routing und URL-Rewrite sind Vorraussetzung:

Wählen Sie hierzu Ihre Website im linken Bereich des IIS-Managers aus, hier ist es die Standardwebsite, öffnen Sie das URL-Rewrite -Modul.

URL_ReWriteg

Klicken Sie im rechten Bereich auf Regel hinzufügen.

Regel_Hinzufügen

Wählen Sie im nächsten Dialogfenster Reverse Proxy.

Reverse_Proxy

Als ausgehende Regel wird eingestellt, das alles was von http://localhost:8080 kommt auf die URL des IIS umgeleitet wird, in diesem Beispiel http://kundenname.mapedit.de/

Proxy_Umleitung

web.config

web.config
<outboundRules>
<rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
<match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:8080/(.*)" />
<action type="Rewrite" value="http{R:1}://kundenname.mapedit.de/{R:2}" />
</rule>
<preConditions>
<preCondition name="ResponseIsHtml1">
<add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
</preCondition>
</preConditions>
</outboundRules>
caution

Bei den von uns bereitgestellten Beispielen der `web.config´ müssen die URLs entsprechend der Installationsumgebung noch angepasst werden.

Index.html

Auch ist die index.html definiert. Sie regelt den Aufruf von MapEdit Mobile aus dem www heraus.

Lautet die Bindung der Default Web Site z.B. mobile-kunde.mapedit.de, so heißt die URL für MapEdit: https://mobile-kunde.mapedit.de

Beim Aufruf greifen die Definitionen aus der index.html und aus den Umleitungen und es wird das Login für MapEdit Mobile aufgebaut. Falls die Umleitungen funktionieren, dann sind die installierten Versionen für Mapedit Web und MapEdit Core zu sehen. Stehen hier keine Versionsangaben sondern Fragezeichen, so funktionieren die Umleitungen nicht.