Zusammenarbeit von IIS und Apache bei Umschreibungen und Weiterleitungen

Zusammenarbeit von IIS und Apache bei Umschreibungen und Weiterleitungen

Ich habe Probleme damit, dass IIS und Apache auf demselben Server laufen. Insbesondere ersetzen alle Weiterleitungen, die Apache vornimmt, die Website-Domäne nicht durch die Zieldomäne. Hier ein Beispiel: Versuch einer Weiterleitung zu https://s3.amazonaws.com/company-documentation/Help/Product/index.html leitet stattdessen weiter zu https://website.company.com/company-documentation/Help/Product/index.html

Ich habe es derzeit so eingerichtet, dass IIS den gesamten Datenverkehr an Apache umleitet und die URL neu schreibt, um die nicht standardmäßige Portnummer zu verbergen. Im Folgenden sind die von mir eingerichteten IIS-Umschreibregeln und die Apache-htaccess-Umleitungen aufgeführt.

Hier ist eine Umleitungsregel für den htaccess-Stammordner in Apache:

# Turn mod_rewrite on
RewriteEngine On

RewriteRule "^Documentation/Product/(.*)$" "https://s3.amazonaws.com/company-documentation/Help/Product/$1" [L,NC]

Dies ist die IIS-Web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://website.company.com:8081/{R:1}" />
                    <serverVariables> 
                        <set name="HTTP_ACCEPT_ENCODING" value="" /> 
                    </serverVariables> 
                </rule>
            </rules>
            <outboundRules>
                <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1">
                    <match filterByTags="A, Form, Img" pattern="^http(s)?://website.company.com:8081/(.*)" />
                    <action type="Rewrite" value="http{R:1}://website.company.com/{R:2}" />
                </rule>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

Das Umschreiben von Apache htaccess funktioniert auf dem aktuellen Produktionsserver, auf dem nur Apache als Webserver installiert ist, einwandfrei. Der neue Server muss sowohl IIS als auch Apache auf demselben Server haben, um sowohl das CRM als auch die Website zu bedienen. Irgendwelche Vorschläge, wie das funktionieren könnte?

BEARBEITEN: Ich bin nicht sicher, ob die Umleitung des Apache-Servers zu IIS für CRM-Anfragen funktioniert, da das auf dem Server installierte ADFS die Ports 80 und 443 verwendet, die verwendet werden müssten, um Apache zum Standardanforderungshandler für HTTP- und HTTPS-Anfragen zu machen.

Antwort1

Die Lösung besteht darin, in die ARR-Proxy-Einstellungen zu gehen und „Reverse Rewrite Host in Response Headers“ zu deaktivieren. Quelle:https://forums.iis.net/t/1176725.aspx

verwandte Informationen