1. Home
  2. Mapservers
  3. MapEdit TileServer
  4. URL Rewrite / Reverse Proxy einrichten
  1. Home
  2. Installation
  3. URL Rewrite / Reverse Proxy einrichten
  1. Home
  2. MapEdit Mobile
  3. URL Rewrite / Reverse Proxy einrichten
  1. Home
  2. MapEdit Portal
  3. URL Rewrite / Reverse Proxy einrichten

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.

Installation

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

Hier die Downloadlinks:

https://www.iis.net/downloads/microsoft/url-rewrite

https://www.iis.net/downloads/microsoft/application-request-routing

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

Alternativ haben wir bei uns 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 das Application Request Routing aktivieren. Das 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
Server Variable hinzufügen

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

Bitte zuerst eine Sicherung der Datei machen.

Beispiel / Vorlagen

Wir haben für MapEdit Mobile und MapEdit TileServer zwei Vorlagen / Beispiele im Software-Repository im Verzeichnis MapEdit/Fullinstallation/URLrewrite abgelegt.

Beispiel: Vorlage web.config für MapEdit Mobile / TileServer

Hierbei ist es so dass alle Anfragen welche auf http(s)://Servername/TileServer/ ankommen, auf http://localhost:8080/TileServer/ weitergeleitet werden. Dh. der IIS leitet die Anfragen an den Tomcat/Wildfly weiter.

<rule name="ReverseProxyInboundRuleTileServer" stopProcessing="true">
 <match url="TileServer/(.*)" />
 <action type="Rewrite" url="http://localhost:8080/TileServer/{R:1}" />
 <serverVariables>
    <set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
    <set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
  </serverVariables>            
</rule>

Das Gleiche passiert bei der zweiten Regel in diesem Beispiel, für MapEdit Mobile.

<rule name="ReverseProxyInboundRuleMapEditMobile" stopProcessing="true">
 <match url="MapEdit/(.*)" />
 <action type="Rewrite" url="http://localhost:8080/MapEdit/{R:1}" />
 <serverVariables>
    <set name="HTTP_X_Original_Host" value="{HTTP_HOST}" />
    <set name="HTTP_X_Real_IP" value="{REMOTE_ADDR}" />
  </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.

<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 definieren:

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/

<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>

Die von uns bereitgestellten Beispiele der web.config müssen die URLs entsprechend der Installationsumgebung noch angepasst werden.

Updated on März 30, 2021