2017-07-05 3 views
0

Ich habe Anwendung gehostet in Tomcat unter Port 8050; mydomain:8050. Nun möchte ich eine freundliche URL haben, sagen wir mydomain.com, die verwendet wird, um auf mydomain:8050 zuzugreifen, ohne dass der Client die Portnummer in der URL sieht. Der Client sollte immer mydomain.com sehen, die intern in mydomain:8050 aufgelöst werden sollte.Rewrite zu anderen Server

Ich habe IIS-Server auf Port 80 ausgeführt. Ich habe eine Website erstellt, nur um Rewrite-Option zu verwenden, die auf mydomain:8050 aufgelöst werden kann. Es hat nicht mit dem Muster arbeite ich verwendet

Muster:((?:[^\/\n]|\/\/)+)(.*) Rewrite URL:{R:1}:8050{R:2}

Dann habe ich installiert Apache HTTP-Server auf Port 90 Gebrauchte Umleitung in IIS-Website die URL umleiten zu mydomain:90$S$Q und dann in Apache neu geschrieben, um es intern zu mydomain:8050 umzuleiten. Das funktioniert, wenn ich eine Abfragezeichenfolge darin habe, wie mydomain.com/queryString, aber funktioniert nicht, wenn ich nur mydomain.com eintippe. Ich kann sehen, dass es auf mydomain:90 umleitet und dort stoppt, ohne dass irgendwelche Rewrite-Regeln ausgeführt werden. Dies ändert auch die URL zu mydomain:90 und ist für den Client sichtbar.

Meine Anforderung ist, dass, wenn der Benutzer mydomain.com eingibt, sollte es intern zu mydomain:8050 (mit Abfragezeichenfolge, falls vorhanden) auflösen, ohne Client es zu sehen. Ich habe IIS auf Port 80 und Apache läuft auf Port 90. Wie kann ich das erreichen? Ich bin sicher, dass dies in der Rewrite-Regel von IIS behandelt werden kann, aber ich bin mir nicht sicher, wie das geht.

Antwort

1

Das Umschreiben auf einen anderen Server ist im Grunde Proxying. Was wir brauchen, ist ein Reverse-Proxy-Setup in IIS, die im Grunde Proxy alle Ihre Anfragen von http://example.com bis zu http://example:8050/(or besser http://localhost:8050)

  • Stellen Sie sicher, ARR Modul auf IIS
  • ein Reverse erstellen installiert haben Proxy-Regel wie diese
<rule name="ReverseProxyInboundRule1" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions> 
    <add input="{CACHE_URL}" pattern="^(https?)://" /> 
    </conditions> 
    <action type="Rewrite" url="{C:1}://mydomain:8050/{R:1}" /> 
</rule> 

Bitte beachten Sie, dass, da sowohl Apcahe als auch IIS auf demselben Server sind, Sie localhost: 8050 als Backend-Proxy verwenden können.

EDIT:

Auch wenn Sie irgendwelche Umleitung zurück aus dem Backend-Proxy kommt und Sie nicht möchten, dass die Location-Header kommt umleiten, können Sie tun, indem Sie „Reverse-rewritehost in Antwort-Header“ unchecking in Anwendung anfordern

  • Wählen Sie den Server-Knoten in IIS-Manager
  • zum Routing von Anwendungsanforderungen Cache
  • Cl Routing ick auf Server-Proxy-Einstellungen
  • Deaktivieren Sie die Option "Reverse-rewritehost in Antwort-Header"

Reverse rewrite host in response headers

+0

Ich habe versucht, aber ich sehe es nicht Umschreiben auf 'Mydomain: 8050'. Es gibt Fehler beim Zugriff auf 'mydomain.com' – Maz

+0

welcher Fehler gibt es? Haben Sie ARR installiert, ohne dass es nicht funktioniert –

+0

Sorry, ich vermisste über ARR. Wie überprüfe ich, ob es installiert ist? Ich bin ziemlich neu in IIS. – Maz