Lassen Sie den Windows-Localhost (Port 80) für den Apache-Dienst an Port 8080 weiterleiten

Lassen Sie den Windows-Localhost (Port 80) für den Apache-Dienst an Port 8080 weiterleiten

Jüngste Entdeckung

Wenn ich IIS wieder auf Port einstelle 80und es auf dem WHS-Computer einlege http://localhost/, erhalte ich die Warnseite „Es liegt ein Problem mit dem Sicherheitszertifikat dieser Website vor“. Wenn ich trotzdem auf „Fortfahren“ klicke, wird diese URL https://localhost/Remote/logon?ReturnUrl=%2fremotefür einen Windows Home Server 2011 Remote Web Access für ein usernameund angezeigt password. Ich kann mich nicht mehr genau erinnern, aber ich glaube nicht, dass ursprünglich nur ein http://localhost/dieses Problem angesprochen hat. Es scheint jedoch, als ob dies alle Versuche, auf localhost zuzugreifen (unabhängig vom Port) beeinträchtigen könnte.

Was könnte tatsächlich das Hauptproblem sein

Oh, die Feinheiten des Netzwerkens! Eine Sache, die mich immer wieder störte, war, warum zwei der Websites "teilweise" angezeigt wurden und die anderen überhaupt nicht. Dann zeigte mir die Ausführung von Firebugs NET-Tracking, dassmein Hauptproblem ist, dass mein ISP als DNS-Proxy fungiert, und natürlich findet es meine Testseiten nicht. Aber es findet die beiden Seiten, die unter der www.(nicht test.) Adresse live sind, und scheint diese bereitzustellen, aber die Bilder sind blockiert, weil (ich nehme an) ich Sperren für den Zugriff auf die Bilddateien eingerichtet habe, wenn sie nicht von der www.für die jeweilige Seite stammen.

Das erklärt das Rätsel, warum die Bilder nicht angezeigt werden (außer bei direktem localhost:8080Aufruf) und das merkwürdige Verhalten beim „teilweisen“ Auffinden dieser zwei spezifischen der fünf Sites.

Jetzt muss ich herausfinden, wie ich meinen Router oder eine Proxy-Datei richtig konfiguriere, um auf meinen WHS-Computer umzuleiten. Ich nutze den Satelliten-Internetdienst von Wildblue, da ich außerhalb des Bereichs mit schnelleren Verbindungen liege. Sie haben eine"optimizer"-Datei(Ich weiß nicht, ob es für alle sichtbar ist oder nicht, wenn nicht, ist esgrundsätzlich identisch mit dieser Version), die ich möglicherweise ändern und auf meinem lokalen System installieren kann, um das zu erreichen, was ich brauche, aber ich bin mir nicht sicher, was ich dort genau tun muss.

Wenn jemand Vorschläge hat, wie ich diese Datei ändern oder meinen Linksys E1200-Router so konfigurieren kann, dass das Senden an den Proxy vermieden wird, wenn es sich um eine lokale Site handelt, dann könnte das der erste (und möglicherweise letzte) Schritt zur Lösung meiner Probleme sein.

Repräsentativer Code basierend auf den Empfehlungen von harrymc ... funktioniert immer noch nicht

IIS-Port auf eingestellt :90.

httdpDatei:

Listen *:80
ServerName localhost:80

vhostsDatei:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName localhost
    ProxyRequests off
    ProxyPass / http://127.0.0.1:90/
    ProxyPassReverse / http://127.0.0.1:90/
</virtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "C:/Users/Public/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
    ProxyRequests off
    ProxyPass / http://127.0.0.1/
    ProxyPassReverse / http://127.0.0.1/
</VirtualHost>

Vorheriges Update: Was ichhatte geglaubtdas Hauptproblem sein (kann ein Unterproblem sein)

Wie bringe ich Windows Home Server (auf dem IIS läuft) dazu, bestimmte Localhost-URLs an den Port weiterzuleiten, 8080sodass Apache (nicht IIS), das auf derselben Maschine läuft, die Anfrage zum Bereitstellen der Seite aufnimmt?

Die c:\Windows\System32\drivers\etc\hostsDatei wurde geändert (siehe unten), aber ich gehe davon aus, dass dies nichts mit der Umleitung zu einem neuen Port zu tun hat. Ich gehe außerdem davon aus, dass IIS die jeweilige test.whateverURL-Anforderung auf dem Port aufnimmt 80und an seinen eigenen lokalen Host auf demselben Port weiterleitet.

Ich habe heruntergeladenWeiterleiten von Anwendungsanforderungenausein Tipp auf einer Seite, die ich gefunden habeIch recherchiere, aber wenn ich es mir ansehe, bin ich mir nicht sicher, ob es hilft oder nicht (ich hatte gehofft, damit eine URL-basierte Weiterleitung zum Port einzurichten 8080). Ich bin Webdesigner und kein Netzwerk-Experte. Wie das alles funktioniert, ist mir also nicht ganz klar.

Eine mögliche Richtung

Basierend aufdieser Link(gefunden nach weiterer Suche basierend auf Erikxivs erstem Kommentar unten) Ich habe Folgendes in IIS als URL-Umschreibung versucht:

Ausgangsregel:

Übereinstimmung: .*(schien beim Test in Ordnung zu sein)

Bedingungen:

Übereinstimmung mit einem der folgenden Elemente... (bei diesen Tests schien die Musterübereinstimmung in Ordnung zu sein)

{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com

Umschreibaktion:

http://localhost:8080/{R:0} (it would not let me put R:1 like the example)

Aber es scheint immer noch keine Weiterleitung zu geben!


Die folgenden Informationen geben den Hintergrund zur neuen, oben genannten Anfrage wieder.


Hintergrundinformation

Ich habe kürzlich einen alten Desktop, auf dem Windows XP lief, in einen Windows Home Server (2011) umgewandelt. Der alte Computer war auch der Host für lokale Testsites, auf denen eine Apache-Installation ausgeführt wurde. Nach einigen Recherchen stellte sich heraus, dass es nicht so schwierig ist, Apache auf einer WHS-Maschine auszuführen, wie ich zunächst dachte (viele Sites sagen, dass die IIS von WHS und Apache Probleme verursachen würden, aber einige, die ich gefunden habe, erwähnten überhaupt keine Probleme, wenn sie richtig eingerichtet sind – stellen Sie im Wesentlichen sicher, dass es keinen Portkonflikt gibt).

Also installierte ich einWAMP(64-Bit-Version) auf den WHS-Computer und habe die Einstellungen in der Apache- httpdKonfigurationsdatei so geändert, dass sie am Port lauscht, 8080damit es keinen Konflikt mit IIS gibt. Ich habe meine virtuelle Hostdatei wie auf dem XP-Computer eingerichtet, nur ebenfalls mit der Portänderung.

Grundsätzlich,alles schien gut zu laufen(siehe jedoch Update),außer...

Das (ursprüngliche) Problem

Während die Seiten zu den lokalen Sites problemlos geladen werden und alle CSS- und JavaScript-Dateien funktionieren,Nicht alle Bilddateien werden angezeigt.Die Pfadangaben sind korrektwie durch Rechtsklick und Auswahl ersichtlich View Image Info(in Firefox... die Bilder werden übrigens in keinem Browser angezeigt, es handelt sich also nicht um einen Browserfehler).

Was mir jedoch aufgefallen ist, ist, dass Typeim Bildinfofeld text/htmlanstelle von PNG Imageoder JPEG Imageusw. angezeigt wird. Dies steht in den Informationen weiter unten, wo die Pfad- (Adress-)Informationen angezeigt werden – in diesem Abschnitt wird erkannt, dass die Datei selbst Typeentweder vom Typ Imageoder ist Background.

Aber trotz dieser Tatsache scheint es, dass es, anstatt den korrekten MIME-Typ (nehme ich an) des Bildes im HTML (eigentlich PHP-generiertes HTML) zu erkennen, versucht, das Bild (egal ob ein imgElement oder ein CSS background-image) als Text zu verarbeiten, und mir daher nichts gibt! Aber ich kann nicht herausfinden, warum. Die mimeDatei, die die Apache-MIME-Typen steuert, ist korrekt. Die Seiten haben die folgenden Überschriften...

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />

…aber diese sollten nicht die Ursache des Problems sein (das war weder unter XP der Fall noch auf der Live-Site).

Deshalb bin ich auf der Suche nach Gedanken zu:

  1. Ist meine Analyse, dass der MIME-Typ das Problem ist, richtig (aufgrund des Updates wahrscheinlich nicht)?
  2. Wo kann ich sonst noch nachsehen, was das Problem verursachen könnte, und wie kann ich es beheben? Könnte es immer noch ein Konflikt mit IIS auf dem WHS sein, und wenn ja, was? Könnte es irgendetwas im PHP sein (das scheint unwahrscheinlich), und wenn ja, was? Was kann ich sonst noch in Apache überprüfen?

Aktualisierte Informationen (mit weiteren [verwandten?] Problemen)

Nach einigem Herumprobieren bin ich zu dem Schluss gekommen, dass zumindest ein Teil des Problems die Änderung des Ports zu sein scheint :8080. Zunächst wurde mir klar, dass der Zugriff auf alle meine Websites nicht so reibungslos verlief, wie ich dachte. In meiner Datei befindet sich folgende Darstellung c:\Windows\System32\drivers\etc\hosts:

127.0.0.1   localhost
127.0.0.1   test.site1.net
127.0.0.1   test.site2.net
127.0.0.1   test.site3.com
127.0.0.1   test.site4.com
127.0.0.1   test.site5.com

Und diese Darstellung in meiner Apache- vhostsDatei:

NameVirtualHost *:8080

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site1.net/httpdocs"
    ServerName test.site1.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site2.net/httpdocs"
    ServerName test.site2.net
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site3.com/httpdocs"
    ServerName test.site3.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site4.com/httpdocs"
    ServerName test.site4.com
</VirtualHost>

<VirtualHost *:8080>
    DocumentRoot "C:/Users/Public/Documents/LocalWebsites/site5.com/httpdocs"
    ServerName test.site5.com
</VirtualHost>

Hier ist das Verhalten: site1und site4werden angezeigt, aber ohne Bilder. Die anderen drei werden überhaupt nicht angezeigt, geben aber Network Error (dns_unresolved_hostname).

Wenn ich jedoch auf die erste Site in den virtuellen Hosts auf der WHS-Maschine zugreife, indem ich localhost:8080die URL verwende,dann die BilderTunerscheinen, und die Site, die in meiner Vhosts-Datei zuerst steht, wird auch angezeigt (was zu erwarten ist); dies geschieht jedoch auch, wenn es sich um eine Site handelte, die zuvor nicht angezeigt wurde (wenn ich also site2an die erste Position gehe, beginnt sie per localhost:8080Anruf zu „arbeiten“).

Ich weiß, dass meine Bilddateien ein 403(korrigiert, ursprünglich sagte ich 404)-Fehler beim Zugriff über test.site4.comdie Syntax in der URL, und ich vermute, dass meine Bilder so angezeigt werden, text/htmlweil die Dateien diesen Fehler zurückgeben (ich glaube also nicht, dass es jetzt ein MIME-Typ-Problem ist, sondern eher ein Fehler beim Auffinden der Bilder). Aber das Seltsame ist, dass die Pfade korrekt sind und Nicht-Bilddateien (JavaScript und CSS) problemlos angezeigt werden.

Meiner Meinung nach scheint es also so, als ob es vielleicht etwas mit dem Port-Switch auf zu tun hat 8080. Meine Probleme sind jetzt:

  1. Warum finden meine Hosts- und VHosts-Dateien nicht alle Sites richtig (gibt es eine andere Datei, die ich auf einem Windows Home Server ändern muss)?
  2. Warum werden auf den Sites, auf denen es funktioniert, speziell die Bilder nicht gefunden (mit dem 403-Fehler, das heißt, ich glaube, es ist „verboten“, was keinen Sinn ergibt, wenn der Zugriff auf die anderen Dateien in den Website-Ordnern erlaubt ist)?
  3. Warum localhost:8080funktioniert der Zugriff in Bezug auf die ersten beiden Probleme immer?

Einige weitere Informationen

Ich wurde gebeten, Protokolldateien zu veröffentlichen. Ich habe jedoch festgestellt, dass keine Protokolle vorhanden waren, außer (anscheinend) in den Fällen, in denen ich über den direkten localhost:8080Aufruf der „Standard“-Site zugegriffen habe.

Also schaltete ich die WAMP-Dienste aus, ging zu den URLs und stellte fest, dass sich das gleiche Verhalten zeigte wie bei laufendem WAMP.Dies deutet darauf hin, dass IIS die Domänennamen weiterhin kontrolliert und nicht Apache sie übernimmt (kann da jemand meine Vermutung bestätigen?), und daher liegt das Problem möglicherweise immer noch darin, die Kontrolle auf den WAMP-Server zu übertragen.

Antwort1

Haben Sie möglicherweise eine .htaccess-Datei, die dazu führt, dass Bilder als Text/HTML bereitgestellt werden?

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>

Antwort2

Wenn Sie Ihre access.log-Dateien bereitstellen können (zumindest ein paar Zeilen, die den 404-Status für die Bildanforderungen zeigen), könnten wir überprüfen, was schief läuft. Ich vermute, dass es sich einfach um ein Domänennamenproblem handelt oder dass Ihre Site absolute Pfade für Bilder verwendet (nur eine Vermutung ...), die Apache falsch verarbeitet.

Antwort3

Der FadenIIS-Umleitung zu Apacheenthält eine sehr einfache Lösung, die in die entgegengesetzte Richtung zu Ihrer geht.

Der Autor des letzten Eintrags sagt, dass die Weiterleitungen in IIS zu eingeschränkt sind, um diese Aufgabe zu erfüllen.

Mit seiner Lösung würden Sie IIS so einrichten, dass es Anfragen von einem anderen Port als 80 empfängt, beispielsweise 90. Dann legen Sie Apache als Empfänger für die beiden Ports 80 und 8080 fest, mit einer Umleitung von Port 80 auf Port 90. Apache schafft anscheinend, was IIS nicht kann.

Antwort4

du brauchst

<directory>
</directory>

vorher </VirtualHost>zuzulassen.

etwas wie das

<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

ich verwende 192.168.1.100:80 für IIS und 192.168.1.200:8080 für Apache in den IPv4-Einstellungen des Internet Protocol v4 (Erweiterte IP-Einstellungen), habe 2 IPs der Klasse C, 192.168.1.100, und füge 192.168.1.200 hinzu. Dies hilft auch bei der SEO, da es sich bei den IP-Adressen der Klasse C um zwei unterschiedliche Websites handelt, die miteinander verlinken.

verwandte Informationen