puerto ocupado libre liberar dejar como bloqueado apache iis networking windows-server-2003

ocupado - Apache e IIS uno al lado del otro(ambos escuchando el puerto 80) en windows2003



puerto 80 bloqueado (9)

Deberá usar diferentes direcciones IP. El servidor, ya sea Apache o IIS, captura el tráfico en función de la IP y el puerto, lo que sea que estén obligados a escuchar. Una vez que comienza a escuchar, usa los encabezados, como el nombre del servidor para filtrar y determinar a qué sitio se accede. No puede hacerlo simplemente cambiando el nombre del servidor en la solicitud

¿Cuáles son algunas buenas maneras de hacer esto? ¿Es posible hacerlo limpiamente?

Idealmente, me gustaría utilizar encabezados de paquetes para decidir qué servidor debe manejar las solicitudes. Sin embargo, si hay una manera más fácil / mejor hágamelo saber.


Encontré el siguiente enlace que sugería tener dos direcciones IP separadas para que ambos pudieran escuchar en el puerto 80: (Editar: El enlace ya no funciona: www.prismix.com/blog/2006/06/running_apache_and_iis_6_toget.cfm)

Hubo una advertencia de que tenía que hacer un cambio en IIS debido a la agrupación de sockets. Aquí están las instrucciones basadas en el enlace de arriba:

  1. Extraiga la utilidad httpcfg.exe del área de herramientas de soporte en el CD de Win2003.
  2. detener todos los servicios de IIS: net stop http / y
  3. haga que IIS escuche solo en la dirección IP que había designado para IIS: httpcfg set iplisten -i 192.168.1.253
  4. asegúrese de que: httpcfg query iplisten (las direcciones IP que figuran son las únicas direcciones IP que IIS escuchará y ninguna otra)
  5. reiniciar servicios IIS: net start w3svc
  6. iniciar el servicio de Apache

Es imposible que ambos servidores escuchen en el mismo puerto en la misma dirección IP: dado que un único socket solo se puede abrir con un solo proceso, solo el primer servidor configurado para una determinada combinación de IP / puerto se vinculará correctamente, y el segundo fallará.

Por lo tanto, necesitará una solución para lograr lo que desea. Lo más probable es que ejecute Apache en su combinación principal de IP / puerto y haga que enrute las solicitudes de IIS (que debe estar configurado para una IP y / o puerto diferente) utilizando mod_rewrite .

Tenga en cuenta que la IP alternativa y el puerto en el que se ejecuta IIS deben ser accesibles a los clientes que se conectan a su servidor: si solo tiene una dirección IP disponible, debe elegir un puerto IIS que generalmente no está bloqueado por firewalls. (8080 podría ser una buena opción, o 443, aunque esté ejecutando HTTP de manera regular y no SSL)

PD Además, tenga en cuenta que necesita modificar la configuración predeterminada de IIS utilizando httpcfg antes de permitir que otros servidores se ejecuten en el puerto 80 en cualquier dirección IP en el mismo servidor: consulte la respuesta de Micky McQuade para el procedimiento para hacerlo ...


Eso no es del todo cierto. Por ejemplo, para HTTP Windows admite el uso compartido de puertos basados ​​en URL, lo que permite que múltiples procesos utilicen la misma dirección IP y el mismo puerto.


Instalando Windows 10 tuve este problema: apache (ipv4) y el servicio de cola (ipv6) escuchando el mismo puerto 80.

Resolví editar el archivo apache httpd.conf cambiando la línea

Escuchar 80

a

Escuchar 127.0.0.1:80


Necesita al menos mod_proxy y mod_proxy_http, que son parte de la distribución (aunque no siempre se crean automáticamente). Entonces puedes mirar aquí: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html

La configuración más simple en un contexto de host virtual es:

ProxyPass /winapp http://127.0.0.1:8080/somedir/ ProxyPassReverse /winapp http://127.0.0.1:8080/somedir/

(Dependiendo de su aplicación web, la configuración real puede volverse más sofisticada). Redirige de forma transparente cada solicitud en la ruta winapp / al servidor de Windows y transfiere la salida resultante al cliente.

Atención: Cuide los enlaces en las páginas entregadas: no se reescriben, por lo que puede ahorrarse muchas molestias si generalmente usa enlaces relativos en su aplicación, como

<a href=../pics/mypic.jpg">

en lugar de la pesadilla de integración habitual de que cada enlace sea absoluto:

<a href="http://myinternalhostname/somedir/crappydesign.jpg">

¡LO ULTIMO ES MALO CADA VEZ ÚNICO!

Para reescribir los enlaces en las páginas hay mod_proxy_html (¡no confundir con mod_proxy_http!) Pero esa es otra historia y otra cruel.


O bien dos direcciones IP diferentes (como las recomendadas) o un servidor web es de proxy inverso a la otra (que está escuchando en un puerto <> 80).

Por ejemplo: Apache escucha en el puerto 80, IIS en el puerto 8080. Cada solicitud http va primero a Apache (por supuesto). A continuación, puede decidir reenviar cada solicitud a un dominio particular (nombrado virtual) o a cada solicitud que contenga un directorio particular (p. Ej., http://www.example.com/winapp/ ) al IIS.

La ventaja de este concepto es que solo tiene un servidor escuchando al público en lugar de dos, usted es más flexible que con dos servidores distintos.

Inconvenientes: algunas aplicaciones webapps están diseñadas y son un verdadero dolor en el culo para integrarse en una infraestructura de proxy inverso. Una aplicación de Internet IIS en funcionamiento depende de un Apache que funcione, por lo que tenemos algunas interdependencias.


Para las personas con una sola dirección IP y múltiples sitios en un servidor, puede configurar IIS para que escuche en un puerto que no sea 80 , por ejemplo, 8080 configurando el puerto TCP en las propiedades de cada uno de sus sitios (incluido el predeterminado).

En Apache, habilite mod_proxy y mod_proxy_http , luego agregue un VirtualHost catch-all (después de todos los demás) para que las solicitudes de Apache no se manejen explícitamente y se "reenvíen" a IIS.

<VirtualHost *:80> ServerName foo.bar ServerAlias * ProxyPreserveHost On ProxyPass / http://127.0.0.1:8080/ </VirtualHost>

Ahora puede hacer que Apache sirva algunos sitios y que IIS sirva a otros, sin diferencia visible para el usuario.

Editar: sus sitios IIS no deben incluir su número de puerto en ninguna URL dentro de sus respuestas, incluidos los encabezados.


Veo que esta es una publicación bastante antigua, pero encontré esto buscando una respuesta para este problema. Después de leer algunas de las respuestas parecen muy largas, así que después de 5 minutos logré resolver el problema de la siguiente manera:

httpd.conf para Apache deja el puerto de escucha como 80 y ''Nombre del servidor'' como FQDN / IP: 80.

Ahora, para IIS, vaya a Servicios administrativos> Administrador de IIS> ''Sitios'' en el menú desplegable de navegación de la izquierda> en la ventana derecha, seleccione la línea superior (sitio web predeterminado) y luego los enlaces a la derecha.

Ahora seleccione http> edit y cambie a 81 e ingrese su IP local para el servidor / pc y en el dominio ingrese su FQDN (www.domain.com) o cierre de IP externo.

Reinicie ambos servidores para asegurarse de que sus puertos estén abiertos tanto en el enrutador como en el firewall, listo.

Esto suena largo aliento, pero literalmente tomó 5 minutos de juego. funciona perfectamente.

Sistema: Windows 8, IIS 8, Apache 2.2