IIS-URL-Neuschreibung: @import in section?

IIS-URL-Neuschreibung: @import in section?

Ich versuche, JetBrains TeamCity (das TomCat auf Port 81 verwendet) hinter IIS 7 zu platzieren, damithttp://www.example.com/teamcity/wird weitergeleitet anhttp://meinserver:81/. Ich glaube, ich habe es größtenteils zum Laufen gebracht, außer dass TeamCity @import im <style>Element ausgibt. Ich kann nicht herausfinden, wie ich eine Ausgangsregel definieren kann, um damit umzugehen.

Wie kann ich die URL neu schreiben, um dieses Problem zu beheben?

Oder kann ich TeamCity alternativ das alternative virtuelle Verzeichnis beibringen, sodass es allem ein Präfix voranstellt /teamcity?

Oder gibt es alternativ eine bessere Möglichkeit, TeamCity hinter IIS 7.5 zu integrieren?

Antwort1

Aktualisieren:Folgendes funktioniert nicht ganz: Teile des Javascripts sind problematisch und die Abmelde-Weiterleitung ist defekt.

Optionen:

  1. Hosten Sie TeamCity in einer Tomcat-Installation, die auf lauscht /teamcity; dann sind keine Ausgangsregeln erforderlich. Bei mir funktioniert das bei einer Drupal-Installation.
  2. Stattdessen umleiten teamcity.example.com(kein virtuelles Verzeichnis). Es gibtBeispielschritte hierfüranderswo. Dies erfordert einige DNS-CNAMEs und ein Platzhalterzertifikat (bei Verwendung von HTTPS für den externen Zugriff).

Die restlichen Anweisungen hinterlasse ich hier für die Nachwelt...

Sie können URL Rewrite so konfigurieren, dass beliebige Teile des Textes umgeschrieben werden, indem Sie festlegen filterByTags="None".

Also ich habe jetzt folgendes drin C:\Inetpub\wwwroot\web.config:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- Anything to http://www.example.com/teamcity/ should be
             rewritten to http://teamcity:81/ -->
        <rule name="TeamCity (/teamcity)">
          <match url="^teamcity/(.*)" />
          <serverVariables>
            <!-- URL Rewrite can't deal with Encoding: gzip; turn that off. -->
            <set name="HTTP_ACCEPT_ENCODING" value="" />
          </serverVariables>
          <action type="Rewrite"
                  url="http://teamcity:81/{R:1}" />
        </rule>
      </rules>

Dies ist die Regel für eingehenden Verkehr. Es gibt drei Regeln für ausgehenden Verkehr:

      <outboundRules>

Login-Weiterleitungen:

        <!-- 302 Redirects (for the login page, e.g.) need to be rewritten. -->
        <rule name="Teamcity (/teamcity) - Redirect" preCondition="IsRedirect">
          <match serverVariable="RESPONSE_LOCATION"
                 pattern="http://[^/]+/(.*)" />
          <action type="Rewrite"
                  value="http://www.example.com/teamcity/{R:1}" />
        </rule>

Normales HTML-Umschreiben:

        <!-- Links in HTML need to be rewritten. -->
        <rule name="TeamCity (/teamcity) - HTML" preCondition="IsHTML">
          <!-- I've ellided the other tag types here; you might want them. -->
          <match filterByTags="A, ..."
                 pattern="^(.*)" />
          <action type="Rewrite"
                  value="http://www.example.com/teamcity/{R:1}" />
        </rule>

@import von CSS-Dateien:

        <!-- TeamCity uses @import for styles; fix that. -->
        <rule name="TeamCity (/teamcity) - Style" preCondition="IsHTML">
          <match filterByTags="None" pattern="@import &quot;/" />
          <action type="Rewrite" value="@import &quot;/teamcity/" />
        </rule>

Und einige Voraussetzungen:

        <preConditions>
          <preCondition name="IsRedirect">
            <add input="{RESPONSE_STATUS}" pattern="302" />
          </preCondition>
          <preCondition name="IsHTML">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
          </preCondition>
        </preConditions>
      </outboundRules>

    </rewrite>
  </system.webServer>
</configuration>

Es scheint zu funktionieren, aber ich komme zurück und aktualisiere diese Antwort, wenn ich noch etwas finde.

verwandte Informationen