Estoy tratando de usar el puerto 80 para mi servidor de aplicaciones, pero cuando realizo "netstat -aon" obtengo
TCP 0.0.0.0:80 0.0.0.0:0 ESCUCHANDO 4
Cuando busco el proceso en el administrador de tareas, muestra que PID 4 es SYSTEM, eso es, no extensión ... nada, solo "SYSTEM". ¿Que está pasando aqui?
Tengo miedo de terminar este proceso, ¿qué hago?
Respuestas:
Aunque las personas señalan servicios específicos (por ejemplo, el "Servicio del Agente de implementación web"), esto no aborda la causa raíz. Si solo deshabilita los servicios que desencadenan el problema, es probable que en el futuro vuelva a tener la cabeza en una forma marginalmente diferente. Por lo tanto, vale la pena entender qué está mal, porque eso conduce a una mejor solución.
Este problema surge cuando un servidor de aplicaciones quiere el control total del puerto 80. Esto entra en conflicto con una característica de Windows que está diseñada para permitir que múltiples procesos manejen solicitudes en el puerto 80. Es completamente posible tener cualquier cantidad de procesos que reciban solicitudes HTTP en el puerto 80, porque Windows tiene un mecanismo de despacho HTTP incorporado. Cada proceso puede decirle a Windows qué URL quiere manejar.
Sin embargo, si un servidor de aplicaciones ignora esto por completo, entonces estás de vuelta en el mundo de los sockets menos flexibles de la vieja escuela donde solo un proceso puede recibir solicitudes destinadas a un puerto en particular.
Eso puede estar bien: si realmente no desea nada más que un proceso particular que maneja la solicitud HTTP en el puerto 80, entonces es tolerable usar un servidor de aplicaciones que no sea compatible con los mecanismos más flexibles que ofrece Windows. (Y algunos servidores de aplicaciones populares tienen esta limitación. Por ejemplo, AFAIK, Tomcat es incapaz de jugar bien con otros e insiste en tener el puerto 80 solo. Por lo tanto, si está utilizando el servidor de aplicaciones de otra persona, puede ser poco práctico para adaptarlo para usar el mecanismo preferido.)
Windows intenta acomodar estos servicios inflexibles al no vincular su mecanismo de envío al puerto 80 hasta que algo lo solicite activamente. (Es por eso que no necesariamente verá un problema inicialmente, pero puede encontrarse con este problema después de algún tipo de actualización o cambio de configuración). Pero confiar en esto no es una solución muy sólida: esencialmente confía en la suerte de que nada intenta escuchar bajo el puerto 80 antes de que se inicie su servidor de aplicaciones. (Hay varias razones por las que un proceso podría intentar especulativamente registrarse para ciertas URL en el puerto 80 y retroceder si no está permitido).
Entonces, si desea que un servicio tenga acceso exclusivo al puerto 80, será mejor que le diga a Windows. No es lo suficientemente bueno como para intentar desactivar todos los servicios que podrían intentar utilizar el mecanismo habitual de uso compartido de puertos, porque es difícil confiar en que los haya encontrado a todos. (Particularmente cuando las actualizaciones de Windows parecen cambiar lo que está activado de manera predeterminada). Probablemente sea una buena práctica deshabilitar las que conoce, pero es mejor abordar esto desde ambos extremos: deshabilite los servicios que no desea y también asegúrese de que no posible para los que no sabías que te podrían hacer tropezar.
De forma predeterminada
HTTP.SYS
(el mecanismo de envío HTTP de uso compartido de puertos subyacente en Windows) puede escuchar en todas las direcciones. Pero puedes decir que no lo haga. Esta página muestra una forma de hacerlo: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/Esa es una forma relativamente ligera de hacerlo, porque todavía permite escuchar en localhost para IPv6. Simplemente libera el puerto 80 de IPv4. Podría llevarlo más lejos con una configuración más especializada. (Incluso podría deshabilitarlo por
HTTP.SYS
completo, pero eso podría romper cosas usando puertos que no sean 80, por lo que puede causar problemas)Pero haga lo que haga, lo importante es asegurarse de que
HTTP.SYS
no intente escuchar en el puerto 80 en la dirección IP que le interesa. Una vez que haya hecho eso, no necesita preocuparse por deshabilitar los servicios, ni debe preocuparse por otros cambios que reintroducen el problema. Si se ha asegurado de que el punto final que necesita esté efectivamente fuera de los límites para el uso compartido de puertos, entonces debe encontrar que el proceso del sistema deja de vincularse a él.fuente
El culpable fue el Servicio de agente de implementación web.
La mejor solución
net stop http
es detener los servicios llamados "Servicio de agente de implementación web".fuente
World Wide Web Publishing Service
. Si bien "net stop http" es en sí una respuesta realmente brutal llena de efectos secundarios desagradables: los servicios como su cola de impresión y parte del proceso de inicio de sesión de Windows 10 dependen de http; lo que hará si lo prueba es darle una lista de servicios que dependen de http y la opción de retroceder. Al probar el pequeño puñado de servicios en esa lista uno por uno, descubrí que el servicio de publicación WWW era el culpable.Es muy probable que sea IIS 6.0 o posterior.
fuente
Intente detenerlo
HTTP.SYS
entrandoDevice Manager/Non Plug and Play Drivers
y seleccioneHTTP
, intente detenerlo y verá los servicios que activan este HTTP para usar el puerto 80.fuente
La última vez que lo verifiqué, no puede finalizar el proceso del "sistema", y si lo hace, supongo que tendrá efectos catastróficos. ¡No voy a probarlo en la PC en la que estoy ahora tampoco!
Parece que algo dentro de Windows está escuchando: 80 - Voy a adivinar que podría ser algo malicioso. La mejor manera de averiguarlo es:
a) Abra un navegador web para localhost y vea qué ocurre
b) Inicie Telnet y telnet en localhost 80 y ejecute algunos HTTP GET básicos (por ejemplo, GET /) y vea qué devuelve
B es la mejor opción si cree que podría estar alojando malware, ya que realmente no desea volver a infectarse. Aunque tal vez no importe.
fuente
Encontré la respuesta a esta pregunta en: /superuser/352017/pid4-using-port-80
Específicamente, cuando se trata del Proceso del sistema 4, debe deshabilitar el controlador HTTP.sys que se inicia bajo demanda por otro servicio, como Windows Remote Management o Print Spooler en Windows 7 o 2008.
Reiniciar y usar netstat -nao | busque ": 80" para verificar si 80 todavía se usa.
También intenté recuperar el puerto simplemente ejecutando un "net stop http", pero el puerto nunca pareció liberarse. Sin embargo, lo anterior funcionó para mí y no necesitaba los otros servicios que dependían de este controlador.
fuente
Windows Sync Share es lo que nos mató en Windows 2012 R2. Una vez que deshabilitamos esta función, todo salió bien.
fuente
En mi caso, se debió a que el antivirus Carbon Black de alguna manera tomó un control absoluto en el puerto 80. Pasé horas tratando de resolverlo, por lo que me siento obligado a compartir solo en caso de que lleve a un alma pobre a la luz :) No sé cómo se solucionó exactamente, ¡pregúntale a tu servidor / equipo de red!
fuente
He resuelto esto a través de una pregunta de stackoverflow. Siga este enlace para encontrar la solución sobre cómo hacer que IIS deje de escuchar en el puerto 80 para una dirección IP especificada.
fuente