Scoperta recente
Con IIS ripristinato alla porta 80
, quando inserisco http://localhost/
il computer WHS, mi dà la pagina di avviso "Si è verificato un problema con il certificato di sicurezza di questo sito Web". Se "Continua" comunque, questo URL viene visualizzato https://localhost/Remote/logon?ReturnUrl=%2fremote
per un accesso Web remoto di Windows Home Server 2011 per un username
e password
. Ora, non posso ricordare con certezza, ma non credo che originariamente solo http://localhost/
sollevato questo problema. Tuttavia, sembra che ciò possa influire su qualsiasi tentativo di accedere a localhost (indipendentemente dalla porta).
Quale potrebbe essere il problema principale
Oh, la complessità del networking! Una cosa che mi dava fastidio era il motivo per cui due dei siti sarebbero "parzialmente" scoperti e gli altri per niente. Quindi, l'esecuzione del tracciamento NET di Firebug mi ha rivelato che il mio problema principale è che il mio ISP agisce come proxy DNS e, naturalmente, non trova i miei siti di test. Ma trova i due siti che si trovano all'indirizzo www.
(non test.
) e sembra servire quelli, ma le immagini sono bloccate perché (presumo) ho impostato blocchi per accedere ai file di immagine se non dal www.
per sito particolare.
Ciò spiega il mistero delle immagini che non vengono visualizzate (aspettatevi con una localhost:8080
chiamata diretta ) e il comportamento strano nel trovare "parzialmente" quei due siti specifici.
Ora ho bisogno di capire come configurare correttamente il mio router o un file proxy per reindirizzare al mio computer WHS. Sono su un servizio Internet satellitare Wildblue, poiché sono fuori dall'area di eventuali connessioni di servizio più veloci. Hanno un file "ottimizzatore" (non so se sia visualizzabile da tutti o no, in caso contrario, è sostanzialmente lo stesso di questa versione ), che potrei essere in grado di modificare e mettere sul mio sistema locale per raggiungere di cosa ho bisogno, ma non sono sicuro di cosa potrei aver bisogno di fare lì.
Se qualcuno ha qualche suggerimento su come modificare quel file o su come configurare il mio router Linksys E1200 per evitare l'invio al proxy se si tratta di un sito locale, allora questo potrebbe essere il primo (e forse l'ultimo) passo per me risolvere i miei problemi.
Codice rappresentativo basato sulle raccomandazioni di harrymc ... ancora non funzionante
Porta IIS impostata su :90
.
httdp
file:
Listen *:80
ServerName localhost:80
vhosts
file:
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>
Aggiornamento precedente: quello che avevo creduto essere il problema principale (potrebbe essere un problema secondario)
Come posso fare in modo che Windows Home Server (che esegue IIS) inoltri gli URL localhost specifici alla porta in 8080
modo che Apache (non IIS) in esecuzione sullo stesso computer raccolga la richiesta per servire la pagina?
Il c:\Windows\System32\drivers\etc\hosts
file è stato modificato (vedi sotto), ma suppongo che non abbia nulla a che fare con il reindirizzamento su una nuova porta. IIS, Suppongo inoltre, è in ripresa la particolare test.whatever
richiesta URL sulla porta 80
e il routing al proprio host locale sulla stessa porta.
Ho scaricato Application Request Routing da un suggerimento su un sito che ho trovato durante la ricerca, ma nel guardarlo, non sono sicuro che possa aiutare o meno (la mia speranza era quella di impostare un inoltro basato sull'URL per port 8080
da esso). Sono un web designer, non un mago della rete. Quindi, come funziona tutto ciò è alquanto sfuggente per me.
Una possibile direzione da percorrere
Sulla base di questo link (trovato dopo aver cercato di più sulla base del primo commento di erikxiv di seguito) ho tentato quanto segue in IIS come riscrittura dell'URL:
Regola in uscita:
Partita: .*
(sembrava testare bene)
condizioni:
Match Any of ... (questi sembravano testare il pattern match okay)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Riscrivi azione:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
Ma sembra che non ci siano ancora spedizioni!
Le informazioni di seguito sono ora tutte sullo sfondo dietro la nuova, sopra, richiesta.
Informazioni di base
Recentemente ho cambiato un vecchio desktop che eseguiva Windows XP per essere un Windows Home Server (2011). Il vecchio computer era anche l'host per i siti di test locali in esecuzione su un'installazione di Apache. Fare alcune ricerche ha rivelato che eseguire Apache su una macchina WHS non sarebbe così difficile come pensavo inizialmente (molti siti affermano che l'IIS di WHS e Apache causerebbe problemi, ma alcuni che ho riscontrato non menzionano alcun problema se impostati correttamente- in sostanza, assicurarsi che non vi siano conflitti di porte).
Quindi ho installato un WAMP (versione a 64 bit) sul computer WHS e ho modificato le impostazioni nel httpd
file di configurazione di Apache per l'ascolto alla porta in 8080
modo da evitare conflitti con IIS. Ho impostato il mio file host virtuale come sul computer XP, solo con la modifica della porta.
Fondamentalmente, tutto sembrava funzionare bene (tuttavia, vedi aggiornamento), tranne ...
Il problema (originale)
Mentre le pagine dei siti locali vengono visualizzate correttamente e tutti i CSS e JavaScript funzionano, tutti i file di immagine non vengono visualizzati . Le informazioni sul percorso sono corrette, come evidenziato facendo clic con il tasto destro e selezionando View Image Info
(in Firefox ... a proposito, le immagini non vengono visualizzate in nessun browser, quindi non è un bug del browser).
Quello che ho notato, tuttavia, è che Type
nella finestra delle informazioni dell'immagine è mostrato text/html
, piuttosto che PNG Image
o JPEG Image
ecc. Questo è nelle informazioni sotto dove mostra le informazioni sul percorso (indirizzo) - in quella sezione, riconosce che il file stesso è di Type
uno Image
o Background
.
Ma nonostante ciò, sembra che invece di riconoscere il corretto tipo mime (presumo) dell'immagine all'interno dell'html (in realtà php generato html), sta invece cercando di elaborare l'immagine (che sia un img
elemento o un css background-image
) come testo, e quindi non darmi niente! Ma non riesco a capire perché. Il mime
file che controlla i tipi mime di Apache è corretto. Le pagine hanno le seguenti intestazioni ...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
... ma quelli non dovrebbero causare il problema (non lo hanno fatto durante l'esecuzione su XP, né sul sito live).
Quindi sto cercando pensieri su:
- La mia analisi del tipo MIME è corretta (in base all'aggiornamento, probabilmente no)?
- Dove altro posso cercare che potrebbe causare il problema e come correggerlo? Potrebbe essere ancora un conflitto con IIS sul WHS e, in caso affermativo, cosa? Potrebbe esserci qualcosa nel php (questo sembra improbabile), e se sì, cosa? Cos'altro posso controllare in Apache?
Informazioni aggiornate (con altri problemi [correlati?])
Facendo ancora un po 'di casino, sono giunto alla conclusione che almeno una parte del problema sembra essere la modifica della porta :8080
. In primo luogo, ho capito che non tutto andava bene come pensavo di raggiungere tutti i miei siti. Ho questa rappresentazione nel mio c:\Windows\System32\drivers\etc\hosts
file:
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
E questa rappresentazione nel mio vhosts
file 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>
Ecco il comportamento : site1
e site4
stanno mostrando, ma senza immagini. Gli altri tre non si presentano affatto, ma danno Network Error (dns_unresolved_hostname)
.
Tuttavia, se accedo il primo sito nelle vhosts sulla macchina WHS utilizzando localhost:8080
l'URL, quindi le immagini si rivelano , e seconda di quale sito è il primo nel mio file vhosts mostra anche (presumibilmente); tuttavia, lo fa anche se in precedenza non lo sarebbe stato (quindi se mi sposto site2
nella prima posizione, inizia a "funzionare" tramite localhost:8080
chiamata).
So che i miei file di immagine stanno restituendo un errore 403
( corretto, in origine ho detto 404 ) quando si accede tramite test.site4.com
sintassi nell'URL e sospetto che le mie immagini vengano visualizzate come text/html
perché i file restituiscono quell'errore (quindi non credo è un problema di tipo mime ora tanto quanto non è possibile trovare le immagini). Ma la cosa strana è che i percorsi sono corretti e che i file non di immagine (javascript e css) stanno arrivando bene.
Quindi nella mia mente sembra che forse qualcosa con lo switch port su 8080
. I miei problemi ora sono:
- Perché i miei file host e vhosts non trovano correttamente tutti i siti (c'è qualche altro file che devo modificare su un Windows Home Server)?
- Su quei siti per cui funziona, perché le immagini non vengono specificamente trovate (con l'errore 403, che è "proibito" credo, il che non ha senso se gli altri file nelle cartelle del sito Web sono autorizzati ad accedere)?
- Perché l'
localhost:8080
accesso funziona indipendentemente da ciò che riguarda le prime due questioni?
Alcune ulteriori informazioni
Mi è stata fatta una richiesta di pubblicare file di registro. Tuttavia, ho scoperto che non c'erano registri tranne (sembra) in quei casi in cui avevo avuto accesso tramite la localhost:8080
chiamata diretta al sito "predefinito".
Quindi ho disattivato i servizi WAMP, sono andato all'URL e ho scoperto lo stesso comportamento di quando WAMP era in esecuzione. Ciò sembrerebbe indicare che IIS sta ancora controllando i nomi di dominio, piuttosto che Apache li raccolga ( qualcuno può confermare la mia ipotesi lì? ) , E quindi il problema potrebbe essere qualcosa che ha ancora il controllo sul server WAMP.