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

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

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.


Auf der rechten Seite auf „Add“ um diese beiden hinzuzufügen:
HTTP_X_Original_Host HTTP_X_Real_IP

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:

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