Reverseproxy: Regelvorlage

von Ruslan Yakushev

Regelvorlagen bieten eine einfache Möglichkeit zum Erstellen einer oder mehrerer Umschreibungsregeln für ein bestimmtes Szenario. Das URL-Rewrite-Module 2 enthält verschiedene Regelvorlagen für einige gängige Verwendungsszenarien. Zusätzlich zu dieser Benutzeroberfläche des URL-Rewrite-Moduls steht ein Framework zum Einfügen benutzerdefinierter Regelvorlagen bereit. In dieser exemplarischen Vorgehensweise werden Sie durch die Verwendung der Regelvorlage „Reverseproxy“ geführt, die im URL-Rewrite-Modul enthalten ist. Weitere Informationen zum Konfigurieren der Vorlage „Reverseproxy“ mit URL-Rewrite-Modul von IIS und dem Routing von Anwendungsanforderungen (Application Request Routing, ARR) von IIS finden Sie unter „Reverseproxy mit URL-Rewrite v2 und ARR“.

Voraussetzungen

Diese exemplarische Vorgehensweise setzt Folgendes voraus:

  • IIS 7 oder höher mit aktiviertem ASP.NET-Rollendienst
  • Installiertes URL-Rewrite-Modul 2.0
  • Installiertes Routing von Anwendungsanforderungen (ARR) von IIS

Erstellen der Beispielwebsite

Der Einfachheit halber wird das Reverseproxyszenario, mit dem Sie in dieser exemplarischen Vorgehensweise arbeiten, auf einem einzelnen Server implementiert, wobei die IIS-Standardwebsite als Reverseproxywebsite und Inhaltsanwendung fungiert, die auf separaten IIS-Websites auf demselben Server gehostet wird.

So erstellen Sie die Beispielinhaltswebsite

  1. Erstellen Sie einen Ordner namens contentsite im folgenden Ordner:

    %SystemDrive%\inetpub\ folder.
    
  2. Erstellen Sie eine IIS-Website namens contentsite, die auf den entsprechenden Ordner unter %SystemDrive%\inetpub\ verweist. Verwenden Sie für die Website Port 8081.
    Sie können die folgenden Befehle verwenden, um die Websites zu erstellen:

    %windir%\System32\inetsrv\appcmd.exe add site /name:"contentsite" /bindings:http/*:8081: /physicalPath:"%SystemDrive%\inetpub\contentsite
    
  3. Erstellen Sie eine Datei mit dem Namen „default.aspx“ im folgenden Ordner:

    %SystemDrive%\inetpub\contentsite
    
  4. Kopieren Sie das folgende ASP.NET-Markup in die Datei, und speichern Sie die Datei als „default.aspx“:

    <%@ Page Language="C#" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Reverse Proxy Test Application</title>
    </head>
    <body>
        <h1>Reverse Proxy Test Page</h1>
        <p>Requested URL path is <%= Request.ServerVariables["SCRIPT_NAME"] %></p>
        <p><a href="http://<%= Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["SCRIPT_NAME"] %>">Here</a> is the link to this page.</p>
    </body>
    </html>
    
  5. Um sicherzustellen, dass die Website ordnungsgemäß funktioniert, öffnen Sie eine Websuche, und fragen Sie die folgenden URLs ab:

    http://localhost:8081/default.aspx
    

Generieren von Eingangs- und Ausgangsregeln mithilfe der Vorlage „Reverseproxy“

Mithilfe der Regelvorlage „Reverseproxy“ können Sie eine Umschreibungsregel für eingehenden Datenverkehr generieren, die HTTP-Anforderungen an einen anderen Server weiterleitet. Optional können Sie mit der Vorlage auch eine Umschreibungsregel für ausgehenden Datenverkehr erstellen, die Hostnamen in den Link-URLs innerhalb von HTML-Antworten korrigieren kann. In dem in dieser exemplarischen Vorgehensweise beschriebenen Beispiel lautet der Hostname des Proxyservers localhost und der Hostname des Inhaltsservers localhost:8081. Die Webanwendung auf dem Inhaltsserver generiert einen Link in der HTML-Antwort, der einen internen Hostnamen verwendet, z. B. http://localhost:8081/default.aspx. Die Ausgangsregel korrigiert diesen Link in den Hostnamen des Proxys, z. B. http://localhost/default.aspx.

Führen Sie die folgenden Schritte aus, um die Regeln mithilfe der Regelvorlage zu erstellen:

  1. Wählen Sie im IIS-Manager in der Strukturansicht auf der linken Seite die „Standardwebsite“ aus.
  2. Öffnen Sie die Featureansicht des URL-Rewrite-Moduls.
  3. Wählen Sie in der Featureansicht des URL-Rewrite-Moduls die Option „Regeln hinzufügen“ und dann die Vorlage „Reverseproxy“ aus:
    Screenshot of the Add Rules dialog box displaying the rule template options. Reverse Proxy is highlighted.
  4. Geben Sie im Dialogfeld „Reverseproxyregeln hinzufügen“ Folgendes ein:
    Servername oder IP-Adresse, an die HTTP-Anforderungen weitergeleitet werden: localhost:8081
    Aktivieren Sie das Kontrollkästchen Domänennamen von Links in HTTP-Antworten umschreiben, und geben Sie Folgendes ein:
    Von: localhost:8081
    An: localhost
    Screenshot of the Add Reverse Proxy Rules dialog box.
  5. Klicken Sie auf OK. Sowohl die Eingangs- als auch die Ausgangsregeln werden erstellt:
    Screenshot of the I I S Manager displaying the U R L Rewrite page.

Testen des Reverseproxys

Um zu testen, dass die von der Regelvorlage generierten Regeln ordnungsgemäß funktionieren, öffnen Sie einen Webbrowser, und stellen Sie eine Anforderung an http://localhost/default.aspx. Die IIS-Standardwebsite empfängt diese Anforderung und leitet sie gemäß der Umschreibungsregel für eingehenden Datenverkehr an http://localhost:8081/default.aspx weiter. Wenn die HTTP-Antwort von der Website contentsite zurückgegeben wird, ändert die Umschreibungsregel für ausgehenden Datenverkehr die Link-URL innerhalb des HTML-Codes von localhost:8081 in localhost und schreibt damit den Hostnamen um:

Screenshot of a browser window displaying a Reverse Proxy Test Page.

Zusammenfassung

In dieser exemplarischen Vorgehensweise haben Sie erfahren, wie Sie mithilfe der Regelvorlage „Reverseproxy“ Regeln generieren, um eine einfache Reverseproxykonfiguration in IIS zu implementieren. Sie können diese Regelvorlage als Ausgangspunkt verwenden, um Basisregeln zu generieren, die später geändert und an die spezifischen Routing- und Umschreibungsanforderungen Ihrer Webanwendung angepasst werden können.