Obtenga Windows localhost (puerto 80) para reenviar al puerto 8080 para el servicio Apache

9

Descubrimiento reciente

Con IIS configurado de nuevo en el puerto 80, cuando lo conecto en http://localhost/la computadora WHS, me da la página de advertencia "Hay un problema con el certificado de seguridad de este sitio web". Si "Continúo" de todos modos, esta url aparece https://localhost/Remote/logon?ReturnUrl=%2fremotepara un Acceso web remoto de Windows Home Server 2011 para un usernamey password. Ahora, no puedo recordar con certeza, pero no creo que originalmente solo haya http://localhost/sacado a relucir este problema. Sin embargo, parece que esto podría afectar cualquier intento de acceder a localhost (sin importar el puerto).

¿Cuál puede ser realmente el problema principal?

¡Oh, las complejidades de las redes! Una cosa que me molestaba era por qué dos de los sitios aparecerían "parcialmente" y los otros no. Luego, ejecutar el seguimiento NET de Firebug me reveló que mi problema principal es que mi ISP está actuando como proxy DNS y, por supuesto, no está encontrando mis sitios de prueba. Pero lo hace encontrar los dos sitios que son en vivo en el www.(no test.electrónico), y parece servir a aquellos, pero las imágenes se bloquean debido a que (supongo) He creado bloques para acceder a los archivos de imagen si no desde el www.de la sitio particular.

Eso explica el misterio de las imágenes que no se muestran (espere en una localhost:8080llamada directa ) y el extraño comportamiento de encontrar "parcialmente" esos dos de los cinco sitios específicos.

Ahora necesito descubrir cómo configurar correctamente mi enrutador o un archivo proxy para redirigirlo 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. Tienen un archivo "optimizador" (no sé si es visible para todos o no, si no, es básicamente lo mismo que esta versión ), que puedo modificar y poner en mi sistema local para lograr lo que necesito, pero no estoy seguro de lo que necesito hacer allí.

Si alguien tiene alguna sugerencia sobre cómo modificar ese archivo o cómo configurar mi enrutador Linksys E1200 para evitar enviarlo 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 establecido 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 creía que era el problema principal (puede ser un problema secundario)

¿Cómo hago para que Windows Home Server (que ejecuta IIS) reenvíe URL localeshost específicas al puerto 8080para 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\hostsarchivo ha sido cambiado (ver más abajo), pero supongo que no tiene nada que ver con el redireccionamiento a un nuevo puerto. IIS, también supongo, está recogiendo la test.whateversolicitud de URL particular en el puerto 80y enrutando a su propio host local en el mismo puerto.

Descargué el Enrutamiento de solicitud de aplicación de un 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 para portarlo 8080). Soy un diseñador web, no un asistente de red. Entonces, cómo funciona todo esto es algo difícil de entender para mí.

Una posible dirección para ir

Basado en este enlace (encontrado después de buscar más basado en el primer comentario de erikxiv a continuación) Intenté lo siguiente en IIS como una reescritura de URL:

Regla de salida:

Partido: .*(parecía probar bien)

Condiciones:

Match Any of ... (estos parecían probar que la coincidencia de patrones está bien)

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

Acción de reescritura:

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 ahora es todo el trasfondo de la nueva solicitud anterior.


Información de fondo

Recientemente cambié un escritorio antiguo que ejecutaba Windows XP para que fuera un Windows Home Server (2011). La vieja computadora también era el anfitrión de 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 conflicto de puertos).

Así que instalé un WAMP (versión de 64 bits) en la computadora WHS, y cambié la configuración en el httpdarchivo de configuración de Apache para escuchar en el puerto 8080para que no haya conflicto con IIS. Configuré mi archivo de host virtual como en la computadora XP, solo con el cambio de puerto también.

Básicamente, todo parecía estar funcionando bien (sin embargo, ver actualización), excepto ...

El problema (original)

Si bien las páginas de los sitios locales se abren bien, y todos los CSS y JavaScript están funcionando, no se muestran todos los archivos de imagen . La información de la ruta es correcta como se evidencia haciendo clic derecho y seleccionando 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).

Sin embargo, lo que noté es que Typese muestra el cuadro de información de la imagen text/html, en lugar de PNG Imageo JPEG Imageetc. Esto se encuentra 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í mismo es de Typecualquiera de los dos Imageo 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), en su lugar está tratando de procesar la imagen (ya sea un imgelemento o un css background-image) como texto, y así no me da nada! Pero no puedo entender por qué. El mimearchivo 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 no deberían estar causando el problema (no lo hicieron cuando se ejecutaban en XP, ni tampoco en el sitio en vivo).

Entonces estoy buscando pensamientos sobre:

  1. ¿Mi análisis de mime-type es el problema correcto (basado en la actualización, probablemente no)?
  2. ¿Dónde más puedo mirar que podría estar causando el problema y cómo corregirlo? ¿Podría seguir siendo un conflicto con IIS en el WHS, y si es así, qué? ¿Podría haber algo en el php (esto parece poco probable), y si es así, qué? ¿Qué más puedo comprobar en Apache?

Información actualizada (con más problemas [relacionados?])

Haciendo un poco más de juego, he llegado a la conclusión de que al menos parte del problema parece ser el cambio a puerto :8080. Primero, me di cuenta de que no todo estaba tan bien como pensaba en llegar a todos mis sitios. Tengo esta representación en mi c:\Windows\System32\drivers\etc\hostsarchivo:

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 vhostsarchivo 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 : site1y site4está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 dominios virtuales en la máquina mediante el uso de WHS localhost:8080en la url, entonces las imágenes no aparecen , y lo que es el sitio por primera vez en mi archivo de host virtual también muestra arriba (que se espera); sin embargo, lo hace incluso si era uno que anteriormente no lo haría (así que si me muevo site2a la primera posición, comienza a "funcionar" a través de una localhost:8080llamada).

Sé que mis archivos de imagen devuelven un error 403( corregido, originalmente dije 404 ) cuando se accede a través de la test.site4.comsintaxis en la url, y sospecho que mis imágenes se muestran text/htmlporque los archivos están devolviendo ese error (así que no lo creo es un problema de tipo mimo ahora, tanto como un fracaso para encontrar las imágenes). Pero lo extraño es que las rutas son correctas, y los archivos que no son de imagen (javascript y css) están funcionando bien.

Entonces, en mi opinión, parece que tal vez sea algo con el cambio de puerto 8080. Mis problemas ahora son:

  1. ¿Por qué mis archivos de hosts y vhosts no encuentran correctamente todos los sitios (¿hay algún otro archivo que deba modificar en un Windows Home Server)?
  2. En esos sitios para los que funciona, ¿por qué no se encuentran específicamente las imágenes (con el error 403, eso está "prohibido", creo, lo que no tiene sentido si se permite el acceso a los otros archivos en las carpetas del sitio web)?
  3. ¿Por qué funciona el localhost:8080acceso sin importar qué en relación con los dos primeros problemas?

Alguna información adicional

Se hizo una solicitud para que publique archivos de registro. Sin embargo, descubrí que no había registros, excepto (parece) en aquellos casos en que había accedido a través de la localhost:8080llamada directa al sitio "predeterminado".

Así que apagué los servicios de WAMP, fui a la url y descubrí el mismo comportamiento que cuando WAMP se estaba ejecutando. Esto parecería indicar que IIS todavía está controlando los nombres de dominio, en lugar de que Apache los recoja ( ¿alguien puede confirmar mi suposición allí? ) , Y por lo tanto, el problema puede ser algo que todavía tiene que ver con el control del servidor WAMP.

ScottS
fuente
Asegúrese de que los permisos de las imágenes reales estén configurados para poder acceder a ellos ... solo una suposición.
cutrightjm
@ ekaj: agradezco la suposición y comprobé los permisos, pero aparentemente ese no es el problema.
ScottS
@ ekaj: agregué información actualizada a mi problema que puede ayudarlo a encontrar una "suposición" diferente (¡tal vez una solución!).
ScottS
¿Está seguro de que el enrutamiento de solicitud de aplicación no funciona? blogs.iis.net/wonyoo/archive/2008/07/09/… parece hacer lo que está pidiendo. Tenga en cuenta que es posible que desee escribir varias reglas para que coincidan con sus diferentes sitios.
erikxiv
@ erikxiv: no, no estoy seguro de eso. Mi problema fue el hecho de que estoy en un territorio desconocido para mí, así que no sabía cómo hacerlo funcionar si pudiera. Buscaré el enlace y te responderé.
ScottS

Respuestas:

1

¿Quizás tiene un archivo .htaccess que hace que las imágenes se sirvan como texto / html?

 <filesMatch "\.(htm|html|css|js|png|jpg)$">
 ForceType 'text/html; charset=UTF-8'
 </filesMatch>
Scott C Wilson
fuente
Buena sugerencia, pero solo un par de los sitios tienen .htaccessarchivos, y ninguno tiene un ForceTypecódigo.
ScottS
@ ScottWilson: agregué información actualizada a mi problema que puede ayudarlo a encontrar una solución diferente.
ScottS
0

Si puede proporcionar sus archivos access.log (al menos un par de líneas que muestran 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 su sitio puede usar rutas absolutas para imágenes (solo adivinando ...) que apache maneja incorrectamente

Martino Dino
fuente
Interesante. No hay archivos de registro para mis intentos de acceso, excepto en los casos en que estaba usando el localhostacceso directo . Así que apagué todo el servidor WAMP y descubrí que estaba obteniendo los mismos resultados. Lo que parece indicar que Apache no está manejando las solicitudes para comenzar, pero IIS sí.
ScottS
Por cierto, escribí mal anteriormente, las imágenes dan un 403.
ScottS
¿Tal vez es mejor cambiar las solicitudes del navegador y verificar si realmente pide eso? O comprobar el registro de Apache err si no pudo enlazar al puerto o da algunos problemas de dirección ...
Martino Dino
@ MartinoDino - Gracias por sus sugerencias. Acabo de actualizar alguna información en mi pregunta que creo que ahora mi problema principal es que mi computadora WHS ni siquiera está manejando la solicitud de mis sitios de prueba, sino que mi proxy ISP parece estarlo. Si puedo resolver eso, entonces comenzaré a descubrir si mis otras partes locales realmente están funcionando.
ScottS
0

El hilo IIS redirigir a Apache contiene 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 hacer el trabajo.

Usando su solución, configuraría IIS para recibir solicitudes de otro puerto que no sea 80, por ejemplo 90. Luego ponga Apache como el receptor para los puertos 80 y 8080, con una redirección del puerto 80 al puerto 90. Apache aparentemente logra hacerlo lo que IIS no puede

harrymc
fuente
@ harrymc: gracias por el aporte. Sin embargo, puede ser útil si miras mi última actualización (que acabo de publicar), descubrí que mi primer problema principal es que las URL de prueba nunca llegan a mi computadora local, sino que intentan ser manejadas por mi ISP proxy. Si tiene alguna sugerencia sobre cómo evitar eso, estoy abierto.
ScottS
Eso podría estar en línea con mi sugerencia: IIS podría no ser lo suficientemente inteligente como para detectar que localhost es una interfaz de bucle local, por lo que la busca en Internet. Por supuesto, localhost nunca se encontrará allí. No tengo el entorno adecuado para probar esto, pero el artículo anterior parece decir que Apache hace el trabajo de manera más inteligente.
harrymc
@ harrymc - Como mencioné en mi pregunta, en realidad no soy una persona de la red, así que tengo un par de preguntas y necesito un poco de orientación. Primero, ¿cambiar mi WHS al puerto 90 va a afectar cómo funciona el WHS como servidor doméstico? Segundo, el enlace que publicó se refiere a intentar acceder a subdominios, mientras que no lo estoy (más bien, estoy buscando acceder a diferentes dominios locales); Entonces, ¿eso cambia algo? Para obtener orientación de la solución vinculada, tengo algunos conocimientos de Apache, por lo que sigo el n. ° 4-5, pero tengo casi todos los conocimientos de IIS, por lo que los puntos n. ° 1-3 no estoy seguro de cómo hacerlo (o incluso en mi caso si yo necesito hacer).
ScottS
# 2-3 probablemente no se aplique a su caso y se puede omitir. # 1 es obligatorio, ya que esa es la idea principal. El truco aquí es hacer de Apache el principal servidor frontal de Internet a cargo de los reenvíos, e IIS en uno secundario y local que no esté conectado a Internet, excepto a través de Apache. Tal vez este artículo podría ayudar para el cambio de puerto. Si nunca ha hecho esto antes, tenga en cuenta todo lo que cambia, por si acaso.
harrymc
@ harrymc: después de realizar los cambios, ni siquiera puedo hacer que mi servidor WAMP se inicie. No estoy seguro de por qué, pero en la actualidad impide una prueba completa para saber si va a funcionar. También me pregunto si, en el primer enlace, ourdomain.domes algo específico de mi computadora o no (o es solo un nombre arbitrario, ya que estaba tratando con subdominios ... ¿debería ser el mío localhost?). Además, en el primer enlace, el our.ip.addessenrutamiento a IIS será el mismo para el servidor Apache, ya que están en la misma computadora (solo un puerto diferente). Eso no debería causar problemas, ¿verdad?
ScottS
0

Como lo ha rastreado hasta un problema de DNS, el resultado básico es que necesita un servidor DNS local que pueda configurar. También menciona un enrutador Linksys E1200 y Windows Home Server, por lo que puede adoptar dos enfoques.

Primero, puede considerar ejecutar un firmware de terceros (por ejemplo, DD-WRT, OpenWRT, Tomato) en su enrutador. El que tiene está usando un chipset Broadcom y debe tener una memoria flash adecuada; DD-WRT lo enumera como compatible. Mi mayor preocupación es que, de alguna manera, la comunidad de firmware de enrutadores de terceros parece haberse desarrollado hasta el punto en que es como tratar de ejecutar Linux a principios de los años 90. Puede intentar buscar en los foros para encontrar lo que necesita, pero no confíe en la base de datos del enrutador en el sitio DD-WRT porque lo dirigirá a las cosas incorrectas. En general, esta opción no me llena de confianza, y a menos que tenga un segundo enrutador disponible, no estoy seguro de poder recomendarlo a menos que le guste ajustar este tipo de cosas.

En segundo lugar, puede RDP en WHS y encender el servidor DNS como se describe en este hilo del foro. Enfoque básico, RDP en, Panel de control, Agregar o quitar programas, Agregar o quitar componentes de Windows (botón), seleccione la casilla de verificación Servidor DNS, vuelva a salir. Lo que no estoy seguro es si obtienes la consola de administración de DNS con esto, y no tengo un cuadro WHS para probarlo. Si obtienes esa consola, estará en Herramientas administrativas / DNS. Para usarlo como lo desee, deberá agregar nuevas zonas de reenvío; para el tipo de cosas que está haciendo, agregaría una zona para cada host (por ejemplo, agregue una zona para www.samplesite.whatever) y luego agregue una entrada de registro A sin nombre especificado, lo que lo convertirá en el valor predeterminado para eso zona. El otro enfoque sería agregar una zona para el sitio de muestras. Lo que sea, luego agregar registros A nombrados (por ejemplo, "www" o "correo"), pero eso puede terminar bloqueando cosas que no desea bloquear. La zona más específica evita que afecte cosas que no desea redirigir. Luego, señalará todos sus sistemas en este cuadro como el servidor DNS. De manera predeterminada, esto hará su propia resolución de DNS externo sin pasar por alto los servidores DNS de su ISP; si desea usarlos como la siguiente etapa, puede especificar sus direcciones como Reenviadores en las propiedades del servidor DNS (haga clic con el botón derecho y busque).

Tercero, si la opción Dos no funciona y la opción Uno lo asusta, puede configurar una caja de Linux internamente y configurarla como un servidor DNS. Hay muchas instrucciones sobre cómo hacerlo; una búsqueda rápida apareció en este artículo de Mark Kolich que parece ser instrucciones decentes para hacer exactamente eso. Si está tan inclinado, esto también puede ofrecerle los recursos que necesita para experimentar con alojamiento basado en Linux (a menos que esté haciendo un desarrollo basado en Windows, por ejemplo .NET o similar).

Esta comparación de servidores DNS de Wikipedia también puede ser útil. Cabe destacar que Simple DNS Plus (comercial), Posadis (gratis, obsoleto? 2004), MaraDNS (gratis, sin interfaz gráfica de usuario, vale la pena mirar) y Unbound (gratis, tiene descargas binarias de Windows, no buscó más) . Todo esto debería ejecutarse en Windows.

poste de la cerca
fuente
Gracias por su respuesta. Si bien es cierto que es un problema de DNS en algún sentido, lo que quiero es que cualquier llamada localhost ni siquiera vaya al DNS de mi ISP para empezar (no debería). Parece "excesivo" de alguna manera tener que configurar un DNS localmente para manejar lo que ya debería ser manejado automáticamente por el sistema. Mis solicitudes de sitios de host local ni siquiera deberían ir a mi DNS de ISP.
ScottS
Si agrega las líneas relevantes al archivo Hosts local, es posible que no lo hagan; en XP estaba en c: \ windows \ system32 \ drivers \ etc \ hosts, no estoy seguro de dónde está en Vista / 7 y si varía entre 32- y de 64 bits. He visto algunas aplicaciones o situaciones de error en las que eso puede romperse, como se señala aquí: fencepost.net/2009/11/dns-fails-nslookup-works-fix
fencepost
Ya he agregado esas líneas a esa ubicación (desde el principio), pero me he preguntado si es la ubicación correcta en un sistema de 64 bits (que es WHS).
ScottS
Su pregunta me llevó a investigar un poco más y esto ( sepago.de/helge/2009/06/04/… ) parece ser muy relevante.
cerca de poste el
Eso fue interesante, pero no estoy seguro de qué tan útil, ya que el C:\Windows\System32\drivers\etcarchivo ya era el que modifiqué, sin embargo, todavía no parece que se esté recogiendo en cuanto a la definición de mis sitios locales. El artículo parece indicar que el archivo se usa de 64-bitforma nativa y 32-bitpor redireccionamiento. ¿Cómo podría afectar esto a mi instalación de Apache y por qué localhostse ignora para mis sitios locales?
ScottS
0

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>

uso 192.168.1.100:80 para iis y 192.168.1.200:8080 para apache en el Protocolo de Internet v4 La configuración de IPv4 (Configuración avanzada de IP) tiene 2 IP de clase C 192.168.1.100 y agrego 192.168.1.200 esto también ayuda en SEO debido a la clase Direcciones IP de C para 2 sitios web diferentes vinculados entre sí.

Tadeh Davtian
fuente