Estou tentando usar a porta 80 no meu servidor de aplicativos, mas quando executo "netstat -aon", recebo
TCP 0.0.0.0:80 0.0.0.0↓ LISTENING 4
Quando olho para o processo no gerenciador de tarefas, ele mostra que o PID 4 é SYSTEM, é isso, não extensão ... nada, apenas "SYSTEM". O que está acontecendo aqui?
Tenho medo de terminar esse processo, o que faço?
Respostas:
Embora as pessoas estejam apontando serviços específicos (por exemplo, o "Serviço do Agente de Implantação da Web"), isso não resolve a causa raiz. Se você apenas desabilitar os serviços que desencadeiam o problema, é provável que ele volte a sua cabeça no futuro em uma aparência marginalmente diferente. Portanto, vale a pena entender o que está errado, porque isso leva a uma solução melhor.
Esse problema surge quando um servidor de aplicativos deseja o controle total da porta 80. Isso entra em conflito com um recurso do Windows projetado para permitir que múltiplos processos tratem solicitações na porta 80. É totalmente possível ter qualquer número de processos todos recebendo solicitações HTTP na porta 80, porque o Windows possui um mecanismo de despacho HTTP interno. Cada processo pode informar ao Windows quais URLs ele deseja manipular.
No entanto, se um servidor de aplicativos ignorar isso totalmente, você estará de volta ao mundo menos flexível dos sockets da velha escola, onde apenas um processo pode receber solicitações destinadas a qualquer porta em particular.
Isso pode ser bom - se você realmente não deseja nada além de um processo específico que lida com solicitação HTTP na porta 80, torna-se tolerável usar um servidor de aplicativos que não suporta os mecanismos mais flexíveis oferecidos pelo Windows. (E alguns servidores de aplicativos populares têm essa limitação. Por exemplo, AFAIK, o Tomcat é incapaz de jogar bem com os outros e insiste em ter a porta 80 totalmente para si. Portanto, se você estiver usando o servidor de aplicativos de outra pessoa, pode ser impraticável adapte-o para usar o mecanismo preferido.)
O Windows tenta acomodar esses serviços inflexíveis, não vinculando seu mecanismo de envio à porta 80 até que algo solicite isso ativamente. (É por isso que você não necessariamente vê um problema inicialmente, mas pode enfrentar esse problema após algum tipo de atualização ou alteração de configuração.) Mas confiar nisso não é uma solução muito sólida - você está basicamente confiando na sorte de que nada tenta escutar na porta 80 antes de o servidor de aplicativos ser iniciado. (Há várias razões pelas quais um processo pode tentar especulativamente se registrar para determinados URLs na porta 80 e recuar se não for permitido.)
Portanto, se você deseja que um serviço tenha acesso exclusivo à porta 80, é melhor informar ao Windows. Não é realmente bom o suficiente tentar desativar todos os serviços que possam tentar usar o mecanismo de compartilhamento de portas usual, porque é difícil ter certeza de que você encontrou todos eles. (Principalmente quando as atualizações do Windows parecem alterar o que está ativado por padrão.) Provavelmente, é uma boa prática desativar os que você conhece, mas é melhor abordar isso dos dois lados: desabilite os serviços que você não deseja e também garanta que não possível para aqueles que você não conhecia.
Por padrão
HTTP.SYS
(a porta subjacente que compartilha o mecanismo de envio HTTP no Windows) pode escutar em todos os endereços. Mas você pode dizer para não. Esta página mostra uma maneira de fazer isso: http://www.mikeplate.com/2011/11/06/stop-http-sys-from-listening-on-port-80-in-windows/Essa é uma maneira relativamente leve de fazê-lo, porque ainda permite escutar no host local para IPv6. Ele libera a porta 80 do IPv4. Você pode ir além com configurações mais especializadas. (Você pode até desativar
HTTP.SYS
completamente, mas isso pode quebrar coisas usando outras portas que não sejam 80, por isso pode causar problemas.)Mas o que quer que você faça, o objetivo é garantir que
HTTP.SYS
não tente escutar na porta 80 no endereço IP de seu interesse. Depois de fazer isso, você não precisa se preocupar com a desativação de serviços, nem com outras alterações que possam apresentar o problema novamente. Se você garantiu que o terminal que você precisa está efetivamente fora dos limites do compartilhamento de portas, deverá descobrir que o processo do sistema para de vincular-se a ele.fonte
O culpado era o Serviço de Agente de Implantação da Web.
Solução melhor do
net stop http
que interromper os serviços chamados "Serviço do Agente de Implantação da Web".fonte
World Wide Web Publishing Service
. Embora o "net stop http" seja uma resposta realmente brutal, cheia de efeitos colaterais desagradáveis - serviços como o spooler de impressão e parte do processo de logon do Windows 10 dependem do http - o que ele fará se você tentar, é fornecer uma lista de serviços que dependem de http e a opção de voltar. Tentando os poucos serviços dessa lista, um por um, é como descobri que o Serviço de Publicação da WWW era o culpado.Provavelmente é o IIS 6.0 ou posterior.
fonte
Tente parar o
HTTP.SYS
entrandoDevice Manager/Non Plug and Play Drivers
e SelectHTTP
, tentar pará-lo e você vai ver os serviços que estão provocando este HTTP para a porta uso 80.fonte
Última vez que verifiquei, você não pode terminar o processo do "sistema" e, se o fizer, acho que terá efeitos catastróficos. Também não vou tentar no PC em que estou agora!
Parece que algo dentro do próprio Windows está ouvindo: 80 - Acho que pode ser algo malicioso. A melhor maneira de descobrir é:
a) Abra um navegador da web para o host local e veja o que aparece
b) Inicie o Telnet e o telnet para o host local 80 e execute algum HTTP GET básico (por exemplo, GET /) e veja o que ele retorna
B é a melhor opção se você acha que pode estar hospedando malware, pois não deseja se infectar novamente. Embora talvez isso não importe.
fonte
Encontrei a resposta para esta pergunta em: /superuser/352017/pid4-using-port-80
Especificamente quando é o Processo do Sistema 4, é necessário desativar o driver HTTP.sys iniciado por demanda por outro serviço, como o Gerenciamento Remoto do Windows ou o Spooler de Impressão no Windows 7 ou 2008.
Reinicialize e use o netstat -nao | encontre ": 80" para verificar se 80 ainda está sendo usado.
Também tentei recuperar a porta executando apenas um "net stop http", mas a porta nunca parecia ter sido liberada novamente. O que foi dito acima funcionou para mim e o II não precisava dos outros serviços que dependiam desse driver.
fonte
O compartilhamento de sincronização do Windows foi o que nos matou no Windows 2012 R2. Depois que desativamos esse recurso, tudo correu bem.
fonte
No meu caso, foi devido ao antivírus Carbon Black, de alguma forma, invadir a porta 80. Passei horas tentando descobrir, então me sinto obrigado a compartilhar apenas no caso de levar uma alma pobre para a luz :) Eu não Para saber exatamente como foi corrigido, pergunte ao seu servidor / equipe de rede!
fonte
Eu resolvi isso através de uma questão de stackoverflow. Siga este link para encontrar a solução de como fazer com que o IIS pare de escutar na porta 80 um endereço IP especificado.
fonte