Najnowsze odkrycie
Gdy IIS jest ustawione z powrotem na port 80
, po włożeniu http://localhost/
do komputera WHS wyświetla mi się strona ostrzegawcza „Wystąpił problem z certyfikatem bezpieczeństwa tej witryny”. Jeśli mimo to „Kontynuuję”, ten adres URL pojawia się w https://localhost/Remote/logon?ReturnUrl=%2fremote
celu uzyskania dostępu do sieci Web systemu Windows Home Server 2011 Remote dla username
i password
. Teraz nie mogę sobie przypomnieć, ale nie sądzę, aby pierwotnie była http://localhost/
to tylko kwestia poruszona. Wydaje się jednak, że może to wpłynąć na wszelkie próby uzyskania dostępu do hosta lokalnego (bez względu na port).
Co może być głównym problemem
Och, zawiłości sieci! Jedną z rzeczy, która mnie niepokoiła, było to, że dwie strony „częściowo” pojawiły się, a pozostałe wcale. Następnie uruchomienie śledzenia NET Firebuga ujawniło mi, że moim głównym problemem jest to, że mój dostawca usług internetowych działa jako serwer proxy DNS i oczywiście nie znajduje moich stron testowych. Ale ma znaleźć dwa miejsca, które są na żywo na www.
(nie test.
) Adres, i wydaje się służyć do tych, ale obrazy są zablokowane, ponieważ (zakładam) I utworzyły bloki dostępu do plików graficznych, jeśli nie z www.
dla konkretna strona.
To tłumaczy tajemnicę nie pokazanych zdjęć (oczekuj na bezpośrednie localhost:8080
połączenie) i dziwne zachowanie w „częściowym” znajdowaniu tych dwóch z pięciu stron.
Teraz muszę wymyślić, jak poprawnie skonfigurować router lub plik proxy, aby przekierowywać z powrotem na komputer WHS. Korzystam z satelitarnego serwisu internetowego Wildblue, ponieważ jestem poza zasięgiem szybszych połączeń serwisowych. Mają plik „optymalizatora” (nie wiem, czy jest on widoczny dla wszystkich, czy nie, jeśli nie, to w zasadzie taki sam jak ta wersja ), który mogę zmodyfikować i zainstalować w moim systemie lokalnym, aby osiągnąć czego potrzebuję, ale nie jestem pewien, co może być potrzebne.
Jeśli ktoś ma jakieś sugestie dotyczące modyfikacji tego pliku lub sposobu konfiguracji routera Linksys E1200, aby uniknąć wysyłania do serwera proxy, jeśli jest to lokalna witryna, może to być pierwszy (i być może ostatni) krok do rozwiązania moich problemów.
Reprezentatywny kod oparty na zaleceniach Harrymca ... wciąż nie działa
Port IIS ustawiony na :90
.
httdp
plik:
Listen *:80
ServerName localhost:80
vhosts
plik:
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>
Poprzednia aktualizacja: To, co uważałem za główny problem (może być problemem dodatkowym)
Jak sprawić, aby Windows Home Server (z uruchomionymi usługami IIS) przekazywał określone adresy URL hosta lokalnego do portu 8080
, aby serwer Apache (nie usługi IIS) działający na tym samym komputerze pobierał żądanie w celu wyświetlenia strony?
c:\Windows\System32\drivers\etc\hosts
Plik został zmieniony (patrz poniżej), ale zakładam, że nie ma nic wspólnego z przekierowanie do nowego portu. Zakładam także, że IIS pobiera określone test.whatever
żądanie adresu URL na porcie 80
i kieruje je do własnego lokalnego hosta na tym samym porcie.
Pobrałem aplikację zapytania routingu z końcówką na miejscu znalazłem się w badania, ale patrząc na niego, nie jestem pewien, czy to pomoże, czy nie (moja nadzieja było założyć jakieś przekierowanie url opartych na porcie 8080
przez niego). Jestem projektantem stron internetowych, a nie kreatorem sieci. To, jak to wszystko działa, jest dla mnie nieco nieuchwytne.
Możliwy kierunek
Na podstawie tego linku (znalezionego po przeszukaniu opartego na pierwszym komentarzu erikxiv poniżej) próbowałem wykonać następujące czynności w IIS jako przepisanie adresu URL:
Reguła wychodząca:
Dopasowanie: .*
(wydawało się, że test jest w porządku)
Warunki:
Dopasuj dowolne z ... (wydawało się, że pasują do wzorca)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Przepisz działanie:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Ale wydaje się, że nadal nie ma przekazywania!
Poniższe informacje stanowią teraz tło nowej, powyższej prośby.
Podstawowe informacje
Niedawno zmieniłem stary pulpit z systemem Windows XP na Windows Home Server (2011). Stary komputer był także hostem dla lokalnych witryn testowych uruchomionych na instalacji Apache. Przeprowadzenie niektórych badań ujawniło, że uruchomienie Apache na maszynie WHS nie będzie tak trudne, jak się początkowo myślałem (wiele stron twierdzi, że IIS WHS i Apache spowodowałyby problemy, ale kilka z nich nie wspomniało o żadnych problemach, jeśli zostały poprawnie skonfigurowane - - zasadniczo upewnij się, że nie ma konfliktu portów).
Więc zainstalowałem WAMP (wersja 64-bitowa) na komputerze WHS i zmieniłem ustawienia w httpd
pliku konfiguracyjnym Apache , aby nasłuchiwał na porcie, 8080
aby nie było konfliktu z IIS. Skonfigurowałem mój wirtualny plik hosta jak na komputerze XP, tylko ze zmianą portu.
Zasadniczo wszystko wydawało się działać poprawnie (patrz aktualizacja), z wyjątkiem ...
Problem (oryginalny)
Podczas gdy strony w lokalnych witrynach wyświetlają się dobrze, a wszystkie css i javascript działają, każdy plik obrazu nie jest wyświetlany . Informacje o ścieżce są poprawne, o czym świadczy kliknięcie prawym przyciskiem myszy i wybranie View Image Info
(w Firefox ... przy okazji, obrazy nie pokazują się w żadnej przeglądarce, więc nie jest to błąd przeglądarki).
Zauważyłem jednak, że Type
w polu informacji o obrazie wyświetla się text/html
zamiast PNG Image
lub JPEG Image
itp. To jest w poniższych informacjach, gdzie pokazuje informacje o ścieżce (adresie) - w tej sekcji rozpoznaje, że sam plik jest Type
albo Image
albo Background
.
Ale pomimo tego wydaje się, że zamiast rozpoznawać właściwy typ MIME (zakładam) obrazu w HTML (faktycznie HTML wygenerowany przez PHP), zamiast tego próbuje przetworzyć obraz (czy to img
element, czy CSS background-image
) jako tekst, a więc nic mi nie daje! Ale nie mogę zrozumieć, dlaczego. mime
Plik kontrolowania Apache typów MIME jest poprawna. Strony mają następujące nagłówki ...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... ale to nie powinno powodować problemu (nie działały podczas uruchamiania na XP, podobnie jak na stronie na żywo).
Dlatego szukam przemyślenia na temat:
- Czy moja analiza typu MIME jest problemem (na podstawie aktualizacji, prawdopodobnie nie)?
- Gdzie jeszcze mogę szukać przyczyny problemu i jak go naprawić? Czy nadal może to być konflikt z IIS na WHS, a jeśli tak, to co? Czy może to być coś w php (wydaje się to mało prawdopodobne), a jeśli tak, to co? Co jeszcze mogę sprawdzić w Apache?
Zaktualizowano informacje (z więcej [powiązanych?] Problemów)
Robiąc trochę więcej zamieszania, doszedłem do wniosku, że przynajmniej część problemu wydaje się być zmianą portu :8080
. Po pierwsze, zdałem sobie sprawę, że nie wszystko było tak dobrze, jak myślałem, wchodząc na wszystkie moje strony. Mam taką reprezentację w moim c:\Windows\System32\drivers\etc\hosts
pliku:
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
A ta reprezentacja w moim vhosts
pliku apache :
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>
Oto zachowanie : site1
i site4
pojawiają się, ale bez obrazów. Pozostałe trzy w ogóle się nie pojawiają, ale dają Network Error (dns_unresolved_hostname)
.
Jednak jeśli uzyskam dostęp do pierwszej witryny w vhostach na maszynie WHS za pomocą localhost:8080
adresu URL, wówczas obrazy się pojawią , a którakolwiek strona pierwsza w moim pliku vhosts również się pojawi (co jest oczekiwane); robi to jednak, nawet jeśli wcześniej tego nie robił (więc jeśli przejdę site2
na pierwszą pozycję, zacznie „działać” przez localhost:8080
połączenie).
Wiem, że moje pliki obrazów zwracają 403
( poprawiony, pierwotnie powiedziałem 404 ) błąd przy dostępie przez test.site4.com
składnię w adresie URL i podejrzewam, że moje obrazy są wyświetlane jako, text/html
ponieważ pliki zwracają ten błąd (więc nie sądzę, że to jest teraz problemem typu MIME, podobnie jak brak znalezienia obrazów). Ale dziwne jest to, że ścieżki są poprawne, a pliki inne niż obrazy (javascript i css) wychodzą dobrze.
Wydaje mi się, że może to być coś z przełącznikiem portów na 8080
. Moje problemy są teraz:
- Dlaczego moje hosty i pliki vhosts nie znajdują poprawnie wszystkich witryn (czy jest jakiś inny plik, który muszę zmodyfikować na serwerze Windows Home Server)?
- Na tych stronach działa, dlaczego obrazy nie zostały znalezione (z błędem 403, to znaczy „zabronione”, jak sądzę, co nie ma sensu, jeśli inne pliki w folderach witryny mają dostęp)?
- Dlaczego
localhost:8080
dostęp działa bez względu na pierwsze dwa problemy?
Kilka dalszych informacji
Zażądano ode mnie opublikowania plików dziennika. Odkryłem jednak, że nie było żadnych dzienników, z wyjątkiem (wydaje się) w tych przypadkach, gdy uzyskiwałem dostęp poprzez bezpośrednie localhost:8080
wywołanie do „domyślnej” strony.
Wyłączyłem więc usługi WAMP i podszedłem do adresu URL i odkryłem to samo, co podczas działania WAMP. Wydaje się to wskazywać, że IIS nadal kontroluje nazwy domen, a nie Apache je przechwytuje ( czy ktoś może potwierdzić moje przypuszczenie? ) , A zatem problemem może być nadal przejęcie kontroli nad serwerem WAMP.
Odpowiedzi:
Czy masz plik .htaccess, który powoduje, że obrazy są wyświetlane jako tekst / HTML?
źródło
.htaccess
pliki, a żadna nie maForceType
w kodzie.Jeśli możesz podać swoje pliki access.log (przynajmniej kilka wierszy wskazujących status 404 dla żądań obrazu), będziemy w stanie sprawdzić, co poszło nie tak. Podejrzewam, że może to być po prostu problem z nazwą domeny lub twoja strona może wykorzystywać bezwzględne ścieżki do obrazów (tylko zgaduję ...), które apache źle obsługuje
źródło
localhost
dostępu. Tak więc całkowicie wyłączyłem serwer WAMP i stwierdziłem, że otrzymuję te same wyniki. Co wydaje się wskazywać, że Apache na początku nie obsługuje żądań, ale IIS tak.Wątek IIS przekierowuje do Apache zawiera bardzo proste rozwiązanie, które idzie w przeciwnym kierunku do twojego.
Autor ostatniego wpisu mówi, że przekierowania w IIS są zbyt ograniczone, aby wykonać zadanie.
Korzystając z jego rozwiązania, skonfigurujesz usługi IIS do odbierania żądań z portu innego niż 80, na przykład 90. Następnie ustaw Apache jako odbiornik dla portów 80 i 8080, z przekierowaniem portu 80 na port 90. Apache najwyraźniej udaje się to zrobić czego IIS nie mogą.
źródło
ourdomain.dom
jest to coś specyficznego dla mojego komputera, czy też nie (czy to tylko dowolne imię, skoro miał do czynienia z poddomenami ... powinienem tak byćlocalhost
?). Ponadto w pierwszym łączuour.ip.addess
routing do IIS będzie taki sam dla serwera Apache, ponieważ znajdują się one na tym samym komputerze (tylko inny port). To nie powinno powodować problemów, prawda?Ponieważ wyśledziłeś to do problemu DNS, podstawowym rezultatem jest to, że potrzebujesz lokalnego serwera DNS, który możesz skonfigurować. Wspominasz również router Linksys E1200 i Windows Home Server, więc możesz zastosować dwa podejścia.
Po pierwsze, możesz rozważyć uruchomienie na routerze oprogramowania firm trzecich (np. DD-WRT, OpenWRT, Tomato). Ten, który używasz, wykorzystuje chipset Broadcom i powinien mieć odpowiednią pamięć flash; DD-WRT podaje to jako obsługiwane. Moim największym problemem jest to, że jakoś społeczność routerów firm trzecich zdołała się rozwinąć do tego stopnia, że przypomina próbę uruchomienia Linuksa na początku lat 90. Możesz spróbować przekopać się przez fora, aby znaleźć to, czego potrzebujesz, ale nie ufaj bazie danych routerów na stronie DD-WRT, ponieważ przekieruje Cię ona do niewłaściwych rzeczy. Ogólnie rzecz biorąc, ta opcja nie daje mi pewności siebie i jeśli nie masz dostępnego drugiego routera, nie jestem pewien, czy mogę go polecić, chyba że lubisz poprawiać tego rodzaju rzeczy.
Po drugie, możesz włączyć RDP do WHS i włączyć serwer DNS zgodnie z opisem w tym wątku na forum. Podstawowe podejście, RDP w, Panel sterowania, Dodaj / Usuń programy, Dodaj / Usuń składniki systemu Windows (przycisk), zaznacz pole wyboru Serwer DNS, wróć. Nie jestem pewien, czy otrzymujesz konsolę zarządzania DNS z tym, a ja nie mam skrzynki WHS do przetestowania. Jeśli dostaniesz tę konsolę, będzie ona w obszarze Narzędzia administracyjne / DNS. Aby użyć go tak, jak chcesz, musisz dodać nowe strefy przekazywania; dla tego, co robisz, dodałbym strefę dla każdego hosta (np. dodaj strefę dla www.samplesite.cokolwiek), a następnie dodaj do niej wpis rekordu A bez określonej nazwy, co spowoduje, że będzie to ustawienie domyślne strefa. Innym podejściem byłoby dodanie strefy dla strony próbek. Cokolwiek, a następnie dodanie nazwanych rekordów A (np. „Www” lub „mail”), ale może to spowodować zablokowanie rzeczy, których nie chcesz blokować. Bardziej ukierunkowana strefa zapobiega wpływaniu na rzeczy, których nie chcesz przekierowywać. Następnie wskażesz wszystkie swoje systemy w tym polu jako serwer DNS. Domyślnie spowoduje to własne rozpoznawanie zewnętrznego DNS całkowicie pomijając serwery DNS twojego dostawcy ISP; jeśli chcesz użyć ich jako następnego etapu, możesz określić ich adresy jako Forwardery we właściwościach serwera DNS (kliknij prawym przyciskiem myszy i poluj).
Po trzecie, jeśli opcja 2 nie działa, a opcja 1 Cię przeraża, możesz wewnętrznie skonfigurować Linuksa i skonfigurować go jako serwer DNS. Istnieje mnóstwo instrukcji, jak to zrobić; pobieżne wyszukiwanie ujawniło ten artykuł Marka Kolicha, który wydaje się być porządną instrukcją, aby dokładnie to zrobić. Jeśli masz na to ochotę, może to również zapewnić zasoby potrzebne do eksperymentowania z hostingiem opartym na systemie Linux (chyba że programujesz w systemie Windows, np. .NET lub podobny).
To porównanie Wikipedii serwerów DNS może być również przydatne. Warto zwrócić uwagę na Simple DNS Plus (komercyjny), Posadis (darmowy, przestarzały? 2004), MaraDNS (darmowy, bez GUI, warty obejrzenia) i Bez ograniczeń (bezpłatny, ma pliki binarne do pobrania dla systemu Windows, nie kopał dalej) . Wszystkie powinny działać w systemie Windows.
źródło
C:\Windows\System32\drivers\etc
plik był już tym, który zmodyfikowałem, ale nadal nie wydaje się, aby był pobierany w zakresie definiowania moich lokalnych witryn. Artykuł wydaje się wskazywać, że plik jest używany64-bit
natywnie i32-bit
przez przekierowanie. Jak może to wpłynąć na moją instalację Apache i dlaczegolocalhost
jest ignorowane w przypadku moich lokalnych witryn?musisz mieć
przed
</VirtualHost>
zezwoleniem.coś takiego
używam 192.168.1.100:80 dla iis i 192.168.1.200:8080 dla apache w protokole internetowym v4 Ustawienia IPv4 (zaawansowane ustawienia IP) mają 2 klasy C ip 192.168.1.100 i dodaj 192.168.1.200 to również pomaga w SEO ze względu na klasę Adresy IP dla 2 różnych stron internetowych łączących się ze sobą.
źródło