Son Keşif
IIS limana geri set ile 80
ben koymak zaman, http://localhost/
WHS bilgisayarda, bu uyarı sayfası "Bu web sitesinin güvenlik sertifikasıyla ilgili bir sorun var" Bana verir. Ben yine de "Devam", bu url https://localhost/Remote/logon?ReturnUrl=%2fremote
bir Windows Home Server 2011 Uzaktan Web Erişimi için geliyor username
ve password
. Şimdi, kesin olarak hatırlayamıyorum, ama başlangıçta http://localhost/
bu konuyu gündeme getirdiğine inanmıyorum . Ancak, sanki bu, yerel ana bilgisayara (bağlantı noktası ne olursa olsun) erişme girişimlerini etkileyebilir gibi görünüyor.
Asıl mesele ne olabilir
Ağ oluşturmanın incelikleri! Beni rahatsız eden bir şey, sitelerin ikisinin neden "kısmen" ortaya çıkması ve diğerlerinin hiç olmamasıydı. Daha sonra, Firebug'un NET izlemesini çalıştırmak, asıl sorunumun ISS'imin DNS proxy'si gibi davrandığını ve elbette test sitelerimi bulamadığını gösterdi. Ama yayında olan iki siteleri bulmak yapar www.
(değil test.
ben değilse, görüntü dosyalarını erişmenin blokları kurdunuz) adresine ve bu kadar hizmet etmek görünür, ancak (ı varsayalım) çünkü görüntüler engellenir www.
için belirli bir site.
Bu, gösterilmeyen görüntülerin gizemini (doğrudan localhost:8080
arama beklenir ) ve beş sitenin bu ikisini "kısmen" bulmadaki garip davranışı açıklar .
Şimdi yönlendiricimi veya proxy dosyasını WHS bilgisayarıma geri yönlendirmek için doğru şekilde nasıl yapılandıracağımı bulmam gerekiyor. Daha hızlı servis bağlantıları alanı dışında olduğum için Wildblue uydu internet servisindeyim. Onlar "optimizer" bir dosya var (herkes tarafından görüntülenebilir olup olmadığını bilmiyorum, eğer değilse, temelde bu sürümle aynıdır ), ben değiştirmek ve benim yerel sistem koymak mümkün olabilir ihtiyacım var ama tam olarak orada ne yapmam gerekebileceğinden emin değilim.
Herhangi birinin bu dosyayı değiştirme veya yerel bir site ise proxy'ye göndermekten kaçınmak için Linksys E1200 yönlendiricimi nasıl yapılandıracağına dair herhangi bir önerisi varsa, bu sorunlarımı çözmem için ilk (ve muhtemelen son) adım olabilir.
Harry'nin önerilerine dayanan temsili kod ... hala çalışmıyor
IIS bağlantı noktası olarak ayarlandı :90
.
httdp
dosya:
Listen *:80
ServerName localhost:80
vhosts
dosya:
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>
Önceki Güncelleme: Ana sorun olduğuna inandığım şey (bir alt sorun olabilir)
Windows Home Server'ın (IIS çalıştıran) belirli yerel ana bilgisayar URL'lerini bağlantı noktasına iletmesini nasıl sağlarım 8080
, böylece aynı makinede çalışan Apache (IIS değil) sayfayı sunma isteğini alır?
c:\Windows\System32\drivers\etc\hosts
Dosyası (aşağıya bakınız) değiştirilmiştir, ama bu yeni porta yeniden yönlendirme ile ilgisi yoktur varsayalım. IIS, aynı zamanda test.whatever
, bağlantı noktasındaki belirli URL isteğini alıyor 80
ve aynı bağlantı noktasındaki kendi yerel ana bilgisayarına yönlendiriyor.
Ben indirilen Uygulama İstek Yönlendirme dan buldum bir sitede bir ucu araştırmayla, ama ona bakarak içinde, ben (umudum portuna bazı url tabanlı yönlendirmeyi ayarlamak oldu yardımcı verip vermeyeceğinizi emin değilim 8080
onun tarafından). Ben bir web tasarımcısıyım, ağ sihirbazı değil. Peki tüm bunların nasıl çalıştığı benim için biraz zor.
Gitmek İçin Olası Bir Yön
Kapalı Tabanlı Bu bağlantıyı bir URL yeniden yazma olarak IIS aşağıdaki teşebbüs (aşağıda erikxiv ilk açıklama kapalı alan daha arama yaptıktan sonra bulundu):
Giden Kuralı:
Eşleşme: .*
(test edilmiş gibi görünüyor)
Koşullar:
Herhangi Biriyle Eşleştir ... (bunlar desen eşleşmesini test ediyor gibi görünüyor)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
İşlemi Yeniden Yaz:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Ama hala yönlendirme yok gibi görünüyor!
Aşağıdaki bilgiler şimdi tüm yeni, yukarıdaki talebin arkasındaki bilgilerdir.
Arkaplan bilgisi
Kısa bir süre önce Windows XP çalıştıran eski bir masaüstünü Windows Home Server (2011) olarak değiştirdim. Eski bilgisayar aynı zamanda bir Apache yüklemesinde çalışan yerel test sitelerinin ana makinesiydi. Bazı araştırmalar yapmak, bir WHS makinesinde Apache'yi çalıştırmanın ilk düşündüğüm kadar zor olmayacağını ortaya koydu (birçok site, WHS ve Apache IIS'sinin sorunlara neden olacağını söylüyor, ancak birkaç tane doğru şekilde ayarlandıysa hiçbir sorundan bahsetmedi. - temel olarak, bağlantı noktası çakışması olmadığından emin olun).
Bu yüzden , WHS bilgisayarına bir WAMP (64 bit sürümü) yükledim ve Apache httpd
yapılandırma dosyasındaki ayarları , bağlantı noktasında dinlemek için 8080
IIS ile çakışma olmayacak şekilde değiştirdim. Sanal anasistem dosyamı XP bilgisayarında olduğu gibi yalnızca bağlantı noktası değişikliği ile ayarladım.
Temel olarak, her şey iyi görünüyordu (ancak güncellemeye bakın), ancak ...
(Orijinal) Sayı
Yerel sitelerin sayfaları düzgün bir şekilde yukarı çekilirken, tüm css ve javascript çalışır durumda olsa da, her resim dosyası gösterilmiyor . Yol bilgisi, sağ tıklatıp seçilerek kanıtlandığı gibi doğrudurView Image Info
(bu arada, Firefox'ta ... görüntüler herhangi bir tarayıcıda gösterilmez, bu nedenle bir tarayıcı hatası değildir).
Fark ettim Ne Ancak, yani Type
görüntü bilgi kutusunda gösteriyor text/html
ziyade, PNG Image
ya JPEG Image
vs Bu yol (adres) bilgisi gösterir nerede aşağıdaki bilgilerde olduğu - o bölümdeki, tanıdığı bu dosya kendisi ait Type
iki Image
ya da Background
.
Ancak bu gerçeğe rağmen, html (aslında php oluşturulan html) içindeki görüntünün doğru mim türünü (varsayıyorum) tanımak yerine, görüntüyü (bir img
öğe veya bir css olsun background-image
) ve böylece bana hiçbir şey vermiyor! Ama nedenini anlayamıyorum. mime
Apache mime tiplerini kontrol eden dosya doğrudur. Sayfalar aşağıdaki başlıklara sahiptir ...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... ancak bunlar soruna neden olmamalıdır (XP'de çalışırken ya da canlı sitede yapmazlar).
Bu yüzden şu konularda düşünceler arıyorum:
- Mime türü analizim sorun mu doğru (güncellemeye dayalı, muhtemelen değil) mi?
- Soruna neden olabilecek başka nereden bakabilirim ve nasıl düzeltilir? WHS'de IIS ile hala bir çakışma olabilir ve eğer öyleyse, ne? Php bir şey olabilir (bu olası görünüyor) ve eğer öyleyse, ne? Apache'de başka neleri kontrol edebilirim?
Güncellenmiş Bilgi (daha fazla [ilgili?] Sorunla)
Biraz daha karışıklık yaparak, sorunun en azından bir kısmının limanda değişiklik olduğu sonucuna vardım :8080
. İlk olarak, tüm sitelerime ulaşırken düşündüğüm kadar iyi olmadığını fark ettim. Benim c:\Windows\System32\drivers\etc\hosts
dosyasında bu temsil var :
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
Ve apache dosyamdaki bu gösterim vhosts
:
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>
Davranış şudur : site1
ve site4
gösteriliyorlar, ancak görüntüler olmadan. Diğer üçü hiç görünmüyor, ama veriyor Network Error (dns_unresolved_hostname)
.
Ben kullanarak WHS makinede sankonlar ilk siteye erişmek Ancak, localhost:8080
url, ardından görüntüleri do göstermek de (beklenen) görünür ve hangisi site benim sankonlar dosyasındaki ilk olduğu; Ancak, daha önce yapamayan biri olsa bile bunu yapar (böylece site2
ilk pozisyona hareket edersem , localhost:8080
çağrı ile "çalışmaya" başlar ).
Görüntü dosyalarım url sözdizimi ile erişildiğinde 403
( düzeltildi, aslında 404 dedim ) hatası döndürdüğünü biliyorum test.site4.com
ve resimlerimin text/html
dosyaları bu hatayı döndürdüğü için gösterildiğinden şüpheleniyorum (bu yüzden sanmıyorum mime tipi bir sorun artık görüntüleri bulamamaktadır). Ama garip olan, yolların doğru olması ve görüntü olmayan dosyaların (javascript ve css) iyi olması.
Yani bence liman geçişi ile ilgili bir şey gibi görünüyor 8080
. Şimdi benim sorunlarım:
- Neden ana makinelerim ve vhosts dosyalarım tüm siteleri doğru bir şekilde bulamıyor (Windows Home Server'da değiştirmem gereken başka bir dosya var)?
- Çalıştığı bu sitelerde, görüntüler neden özel olarak bulunmuyor (403 hatasıyla, "yasak" olduğuna inanıyorum, web sitesi klasörlerindeki diğer dosyalara erişime izin veriliyorsa mantıklı değil)?
localhost:8080
İlk iki sorunla ilgili ne olursa olsun erişim neden çalışıyor?
Bazı Ek Bilgiler
Günlük dosyaları göndermem için bir istekte bulunuldu. Ancak, ben localhost:8080
"varsayılan" siteye doğrudan çağrı yoluyla erişmişti o durumlarda (görünür) dışında hiçbir günlük oluştu keşfetti .
Bu yüzden WAMP hizmetlerini kapattım ve URL'lere gittim ve WAMP'ın çalıştığı zamanla aynı davranışı keşfettim. Bu, IIS'nin Apache'yi almak yerine etki alanı adlarını hala kontrol ettiğini gösteriyor gibi görünüyor ( birisi varsayımımı doğrulayabilir mi? ) Ve bu nedenle sorun, kendisini WAMP sunucusuna kontrol altına almakla ilgili bir şey olabilir.