Descubrimiento reciente
Con IIS configurado nuevamente en el puerto 80
, cuando lo instalo http://localhost/
en la computadora WHS, aparece la página de advertencia "Hay un problema con el certificado de seguridad de este sitio web". Si "Continúo" de todos modos, aparece esta URL https://localhost/Remote/logon?ReturnUrl=%2fremote
para un acceso web remoto de Windows Home Server 2011 para a username
y password
. Ahora, no puedo recordarlo con seguridad, pero no creo que originalmente se haya mencionado http://localhost/
este tema. Sin embargo, parece que esto podría afectar cualquier intento de acceder al localhost (sin importar el puerto).
¿Cuál puede ser realmente el problema principal?
¡Oh, las complejidades de la creación de redes! Una cosa que seguía molestándome era por qué dos de los sitios aparecían "parcialmente" y los demás no aparecían en absoluto. Luego, ejecutar el seguimiento NET de Firebug me reveló queMi principal problema es que mi ISP actúa como proxy DNS.y, por supuesto, no encuentra mis sitios de prueba. Pero encuentra los dos sitios que están activos en la dirección www.
(no test.
) y parece servirlos, pero las imágenes están bloqueadas porque (supongo) he configurado bloques para acceder a los archivos de imágenes si no son desde www.
el sitio concreto.
Eso explica el misterio de que las imágenes no se muestren (excepto en localhost:8080
una llamada directa) y el comportamiento extraño al encontrar "parcialmente" esos dos sitios específicos de los cinco.
Ahora necesito descubrir cómo configurar correctamente mi enrutador o un archivo proxy para redirigir a mi computadora WHS. Estoy en el servicio de Internet satelital Wildblue, ya que estoy fuera del área de conexiones de servicio más rápidas. ellos tienen unarchivo "optimizador"(No sé si es visible para todos o no, si no, esBásicamente lo mismo que esta versión.), que puedo modificar e instalar en mi sistema local para lograr lo que necesito, pero no estoy seguro de qué debo hacer exactamente allí.
Si alguien tiene alguna sugerencia sobre cómo modificar ese archivo o cómo configurar mi enrutador Linksys E1200 para evitar el envío al proxy si es un sitio local, entonces ese puede ser el primer (y posiblemente el último) paso para resolver mis problemas.
Código representativo basado en las recomendaciones de harrymc... todavía no funciona
Puerto IIS configurado en :90
.
httdp
archivo:
Listen *:80
ServerName localhost:80
vhosts
archivo:
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>
Actualización anterior: Lo que yohabía creídoser el problema principal (puede ser un problema secundario)
¿Cómo hago para que Windows Home Server (que ejecuta IIS) reenvíe URL de host local específicas al puerto 8080
para que Apache (no IIS) que se ejecuta en la misma máquina recoja la solicitud para servir la página?
El c:\Windows\System32\drivers\etc\hosts
archivo ha sido modificado (ver más abajo), pero supongo que eso no tiene nada que ver con el redireccionamiento a un nuevo puerto. También supongo que IIS recoge la test.whatever
solicitud de URL particular en el puerto 80
y la enruta a su propio host local en el mismo puerto.
yo descarguéEnrutamiento de solicitudes de aplicacionesdeun consejo en un sitio que encontréAl investigar, pero al mirarlo, no estoy seguro de si ayudará o no (mi esperanza era configurar algún reenvío basado en URL al puerto 8080
). Soy un diseñador web, no un asistente de redes. Entonces, cómo funciona todo esto es un tanto difícil de entender para mí.
Una posible dirección a seguir
Con sede fueraeste enlace(encontrado después de buscar más basándose en el primer comentario de Erikxiv a continuación) Intenté lo siguiente en IIS como una reescritura de URL:
Regla de salida:
Partido: .*
(pareció funcionar bien)
Condiciones:
Coincide con cualquiera de... (estos parecían coincidir bien con el patrón de prueba)
{HTTP_HOST} Matches the Pattern test\.site1\.net
{HTTP_HOST} Matches the Pattern test\.site2\.net
{HTTP_HOST} Matches the Pattern test\.site3\.com
Reescribir acción:
http://localhost:8080/{R:0} (it would not let me put R:1 like the example)
¡Pero parece que todavía no hay reenvío!
La información a continuación es ahora toda la información detrás de la nueva solicitud anterior.
Información de fondo
Recientemente cambié un escritorio antiguo que ejecutaba Windows XP para convertirlo en un Windows Home Server (2011). La vieja computadora también era el anfitrión de los sitios de prueba locales que se ejecutaban en una instalación de Apache. Investigar un poco reveló que ejecutar Apache en una máquina WHS no sería tan difícil como pensé al principio (muchos sitios dicen que el IIS de WHS y Apache causaría problemas, pero algunos que encontré no mencionaron ningún problema si se configuran correctamente). -Básicamente, asegúrese de que no haya ningún conflicto de puertos).
Entonces instalé unWAMP(versión de 64 bits) a la computadora WHS y cambió la configuración en el httpd
archivo de configuración de Apache para escuchar en el puerto 8080
para que no haya conflictos con IIS. Configuré mi archivo de host virtual como en la computadora XP, solo que también con el cambio de puerto.
Básicamente,todo parecía estar funcionando bien(sin embargo, ver actualización),excepto...
La edición (original)
Si bien las páginas de los sitios locales funcionan bien y todo CSS y JavaScript funcionan,todos los archivos de imagen no se muestran.La información de la ruta es correcta.como se evidencia al hacer clic derecho y seleccionar View Image Info
(en Firefox... por cierto, las imágenes no se muestran en ningún navegador, por lo que no es un error del navegador).
Lo que he notado, sin embargo, es que Type
en el cuadro de información de la imagen se muestra text/html
, en lugar de PNG Image
o JPEG Image
etc. Esto es en la información a continuación donde muestra la información de la ruta (dirección); en esa sección, reconoce que el archivo en sí es de Type
cualquiera Image
o Background
.
Pero a pesar de ese hecho, parece que en lugar de reconocer el tipo mime correcto (supongo) de la imagen dentro del html (en realidad, html generado por php), está intentando procesar la imagen (ya sea un img
elemento o un css background-image
) como texto, y por lo tanto no me da nada! Pero no puedo entender por qué. El mime
archivo que controla los tipos mime de Apache es correcto. Las páginas tienen los siguientes encabezados...
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
...pero esos no deberían estar causando el problema (no lo hicieron cuando se ejecutaba en XP, ni tampoco en el sitio en vivo).
Entonces estoy buscando ideas sobre:
- ¿Mi análisis del tipo mime es correcto (basado en la actualización, probablemente no)?
- ¿Dónde más puedo buscar que pueda estar causando el problema y cómo solucionarlo? ¿Podría haber todavía un conflicto con IIS en WHS y, de ser así, qué? ¿Podría ser algo en php (esto parece poco probable) y, de ser así, qué? ¿Qué más puedo comprobar en Apache?
Información actualizada (con más problemas [¿relacionados?])
Trasteando un poco más, llegué a la conclusión de que al menos parte del problema parece ser el cambio al port :8080
. Primero, me di cuenta de que no todo iba tan bien como pensaba al acceder a todos mis sitios. Tengo esta representación en mi c:\Windows\System32\drivers\etc\hosts
archivo:
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
Y esta representación en mi vhosts
archivo 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>
Aquí está el comportamiento: site1
y site4
están apareciendo, pero sin imágenes. Los otros tres no aparecen en absoluto, pero dan Network Error (dns_unresolved_hostname)
.
Sin embargo, si accedo al primer sitio en los vhosts en la máquina WHS usando localhost:8080
la URL,luego las imageneshaceraparecer, y el sitio que esté primero en mi archivo vhosts también aparece (lo cual es de esperar); sin embargo, lo hace incluso si era uno que antes no lo hacía (por lo que si me muevo site2
a la primera posición, comienza a "funcionar" mediante localhost:8080
llamada).
Sé que mis archivos de imagen devuelven un 403
(corregido, originalmente dije 404) error cuando se accede a través de test.site4.com
la sintaxis en la URL, y sospecho que mis imágenes se muestran text/html
porque los archivos devuelven ese error (así que no creo que sea un problema de tipo mime ahora sino más bien una falla al encontrar las imágenes). ). Pero lo extraño es que las rutas son correctas y los archivos que no son de imágenes (javascript y css) funcionan bien.
Entonces, en mi opinión, parece que tal vez sea algo con el cambio de puerto a 8080
. Mis problemas ahora son:
- ¿Por qué mis archivos hosts y vhosts no encuentran correctamente todos los sitios (hay algún otro archivo que necesito modificar en un Windows Home Server)?
- En esos sitios para los que funciona, ¿por qué no se encuentran las imágenes específicamente (con el error 403, que creo que está "prohibido", lo cual no tiene sentido si se permite el acceso a los otros archivos en las carpetas del sitio web)?
- ¿Por qué el
localhost:8080
acceso funciona pase lo que pase en relación con las dos primeras cuestiones?
Alguna información adicional
Se me solicitó que publicara archivos de registro. Sin embargo, descubrí que no se producían registros excepto (parece) en aquellos casos en los que había accedido a través de la localhost:8080
llamada directa al sitio "predeterminado".
Entonces apagué los servicios WAMP, fui a las URL y descubrí el mismo comportamiento que cuando WAMP se estaba ejecutando.Esto parecería indicar que IIS todavía controla los nombres de dominio, en lugar de que Apache los recoja (¿Alguien puede confirmar mi suposición allí?), y por lo tanto el problema bien puede ser algo relacionado con el control del servidor WAMP.
Respuesta1
¿Quizás tenga un archivo .htaccess que hace que las imágenes se muestren como texto/html?
<filesMatch "\.(htm|html|css|js|png|jpg)$">
ForceType 'text/html; charset=UTF-8'
</filesMatch>
Respuesta2
Si puede proporcionar sus archivos access.log (al menos un par de líneas que muestren el estado 404 de las solicitudes de imágenes), podremos verificar qué sale mal. Sospecho que simplemente podría ser un problema de nombre de dominio, o que su sitio puede usar rutas absolutas para imágenes (sólo estoy adivinando...) que Apache maneja incorrectamente.
Respuesta3
La amenazaRedirección de IIS a Apachecontiene una solución muy simple, que va en la dirección opuesta a la suya.
El autor de la última entrada dice que las redirecciones en IIS son demasiado limitadas para realizar el trabajo.
Usando su solución, configuraría IIS para recibir solicitudes de otro puerto que no sea el 80, por ejemplo el 90. Luego, coloque a Apache como receptor para los puertos 80 y 8080, con una redirección del puerto 80 al puerto 90. Aparentemente, Apache logra hacerlo. lo que IIS no puede.
Respuesta4
necesitas tener
<directory>
</directory>
antes
</VirtualHost>
de permitir.
algo como esto
<Directory "C:\Apache24\htdocs">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Utilizo 192.168.1.100:80 para iis y 192.168.1.200:8080 para apache en el Protocolo de Internet v4 Configuración IPv4 (Configuración IP avanzada) tengo 2 IP clase C 192.168.1.100 y agrego 192.168.1.200, esto también ayuda en SEO debido a la clase Direcciones IP C para 2 sitios web diferentes que se vinculan entre sí.