Servidor web - Web server

A parte interna e frontal de um servidor Dell PowerEdge , um computador projetado para ser montado em um ambiente de montagem em rack .
Vários servidores da web podem ser usados ​​para um site de alto tráfego; aqui, os servidores Dell são instalados juntos, sendo usados ​​pela Wikimedia Foundation .

Um servidor da web é um software de computador e hardware subjacente que aceita solicitações via HTTP , o protocolo de rede criado para distribuir páginas da web ou sua variante segura HTTPS . Um agente de usuário , geralmente um navegador da web ou rastreador da web , inicia a comunicação fazendo uma solicitação para um recurso específico usando HTTP, e o servidor responde com o conteúdo desse recurso ou uma mensagem de erro . O servidor também pode aceitar e armazenar recursos enviados do agente do usuário, se configurado para isso.

Um servidor pode ser um único computador ou mesmo um sistema incorporado , como um roteador com uma interface de configuração incorporada, mas os sites de alto tráfego normalmente executam servidores da web em frotas de computadores projetados para lidar com um grande número de solicitações de documentos e arquivos multimídia e scripts interativos. Um recurso enviado de um servidor web pode ser um arquivo preexistente disponível para o servidor ou pode ser gerado no momento da solicitação por outro programa que se comunica com o programa servidor. O primeiro costuma ser mais rápido e fácil de armazenar em cache para solicitações repetidas, enquanto o último oferece suporte a uma gama mais ampla de aplicativos. Os sites que oferecem conteúdo gerado geralmente incorporam arquivos armazenados sempre que possível.

Tecnologias como REST e SOAP , que usam HTTP como base para a comunicação geral de computador a computador, estenderam a aplicação de servidores web muito além de seu propósito original de servir páginas legíveis por humanos.

História

O primeiro servidor web do mundo, uma estação de trabalho NeXT Computer com Ethernet, 1990. A etiqueta da caixa diz: "Esta máquina é um servidor. NÃO DESLIGUE!"
Cobalt Qube 3 da Sun - um dispositivo de servidor de computador (2002, descontinuado)

Em março de 1989, Sir Tim Berners-Lee propôs um novo projeto a seu empregador CERN , com o objetivo de facilitar a troca de informações entre cientistas por meio de um sistema de hipertexto . O projeto resultou em Berners-Lee escrevendo várias bibliotecas de software e três programas entre 1990 e 1991:

  • WWWNeXTStepEditor: um editor de navegador da Web , também chamado WorldWideWeb ;
  • WWWLineMode: um navegador da Web em modo de linha portátil usado para explorar o primeiro site;
  • WWWDaemon: um servidor Web , mais tarde conhecido como CERN httpd , que rodava em um computador NeXTSTEP .

O primeiro site da futura rede mundial de computadores foi hospedado em um computador NeXTSTEP gerenciado por Tim Berner-Lee.

Em 1991 (agosto), Tim Berner-Lee anunciou o nascimento da tecnologia WWW e incentivou os cientistas a adotá-la e desenvolvê-la.

Em 1991 (dezembro) o primeiro servidor web fora da Europa foi instalado no SLAC (EUA).

Em 1991-1992, o CERN promoveu ativamente a adoção desta nova arquitetura entre os cientistas, escrevendo sobre ela em seus boletins informativos e fazendo apresentações / demonstrações ao vivo em vários institutos e universidades.

Em 1993, "o CERN emitiu uma declaração pública afirmando que os três componentes do software da Web (o cliente de modo de linha básico, o servidor básico e a biblioteca de código comum) foram colocados em domínio público".

Em 1994, "Tim Berners-Lee deixou o CERN para criar o World Wide Web Consortium (W3C) no MIT " (em colaboração com CERN e DARPA) para regular o desenvolvimento das muitas tecnologias envolvidas ( HTTP , HTML , etc.) por meio de um processo de padronização.

Na prática, entre 1991 e 1996, a simplicidade e eficácia das primeiras tecnologias usadas para navegar e trocar dados através da World Wide Web ajudou a portá-los para muitos sistemas operacionais diferentes e difundir seu uso inicialmente entre organizações científicas e universidades, em seguida, também para o público e empresas privadas e, finalmente, para usuários finais privados.

Naqueles primeiros anos, novas implementações de navegadores e servidores web (ou seja, NCSA HTTPd , Apache HTTPd , AOLserver , Netscape Enterprise Server , IIS , etc.) foram desenvolvidas por várias organizações, incluindo privadas, iniciando assim uma forte competição que desde então cresceu exponencialmente (veja também Participação de mercado de software de servidor web ).

Características básicas comuns

Embora os programas de servidor da Web difiram na forma como são implementados, a maioria deles oferece os seguintes recursos comuns básicos.

  • HTTP : suporte para uma ou mais versões do protocolo HTTP para enviar versões de respostas HTTP compatíveis com versões de solicitações HTTP do cliente, por exemplo, HTTP / 1.0, HTTP / 1.1 mais, se disponível, HTTP / 2 , HTTP / 3 ;
  • Registro : geralmente os servidores web também têm a capacidade de registrar algumas informações, sobre solicitações do cliente e respostas do servidor, para registrar arquivos para fins de segurança e estatísticas.

Alguns outros recursos populares (apenas uma seleção muito curta) são:

Tradução de caminho

Os servidores da Web são capazes de mapear o componente do caminho de um Localizador Uniforme de Recursos (URL) em:

  • um recurso de sistema de arquivo local (para solicitações estáticas);
  • um nome de programa interno ou externo (para solicitações dinâmicas).

Para uma solicitação estática, o caminho do URL especificado pelo cliente é relativo ao diretório raiz do site de destino.

Considere o seguinte URL, pois seria solicitado por um cliente por HTTP:

http://www.example.com/path/file.html

O agente do usuário do cliente irá traduzi-lo em uma conexão comwww.example.comcom a seguinte solicitação HTTP /1.1:

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

O servidor da web em www.example.comirá anexar o caminho fornecido ao caminho do diretório raiz do site (Host). Em um servidor Apache , isso é comumente/ home / www / website(em máquinas Unix , geralmente/ var / www / website) O resultado é o recurso do sistema de arquivos local:

/home/www/www.example.com/path/file.html

O servidor da web então lê o arquivo , se houver, e envia uma resposta ao navegador da web do cliente. A resposta descreverá o conteúdo do arquivo e conterá o próprio arquivo ou uma mensagem de erro retornará informando que o arquivo não existe ou não está disponível.

Servidores da web em modo kernel e modo de usuário

Um software de servidor da web pode ser incorporado ao kernel do sistema operacional ou no espaço do usuário (como outros aplicativos regulares).

Os servidores da Web executados no modo kernel podem ter acesso direto aos recursos do kernel e, portanto, podem ser, em teoria, mais rápidos do que aqueles executados no modo usuário; de qualquer forma, existem desvantagens em executar um servidor web no modo kernel, por exemplo: dificuldades no desenvolvimento ( depuração ) do software, enquanto erros críticos em tempo de execução podem levar a sérios problemas no kernel do sistema operacional.

Os servidores da Web executados no modo de usuário precisam solicitar ao sistema permissão para usar mais memória ou mais recursos da CPU. Essas solicitações ao kernel não apenas demoram, mas nem sempre são satisfeitas porque o sistema reserva recursos para seu próprio uso e tem a responsabilidade de compartilhar os recursos de hardware com todos os outros aplicativos em execução. A execução no modo de usuário também pode significar cópias de buffer inúteis, que são outra limitação para servidores da web no modo de usuário.

Hoje em dia, quase todo software de servidor web é executado no modo de usuário (porque muitas das pequenas desvantagens acima foram superadas por hardware mais rápido, novas versões de sistema operacional , chamadas de sistema de sistema operacional muito mais rápidas e novo software de servidor web). Consulte também comparação de software de servidor da web para descobrir quais deles são executados no modo kernel ou no modo de usuário (também referido como espaço do kernel ou espaço do usuário).

Performances

Para melhorar a experiência do usuário, os servidores Web devem responder rapidamente (o mais rápido possível) às solicitações do cliente; a menos que a resposta do conteúdo seja limitada (por configuração) para algum tipo de arquivo (por exemplo, arquivos grandes, etc.), o conteúdo de dados retornado também deve ser enviado o mais rápido possível (alta velocidade de transferência).

Para software de servidor Web, as principais estatísticas de desempenho (medidas sob uma carga variável de clientes e solicitações por cliente) são:

  • número máximo solicitações por segundo (RPS, semelhante aQPS, dependendo da versão e configuração do HTTP, tipo de solicitações HTTP, etc.);
  • tempo de resposta da latência da rede (geralmente em milissegundos) para cada nova solicitação do cliente;
  • taxa de transferência em bytes por segundo (dependendo do tamanho do arquivo, conteúdo em cache ou não, largura de banda de rede disponível, tipo de protocolo HTTP usado, etc.).

O número de desempenho acima de três pode variar visivelmente dependendo do número de conexões TCP ativas, portanto, um quarto número de estatística é o nível de simultaneidade suportado por um servidor Web em uma configuração de servidor Web específica, tipo de sistema operacional e recursos de hardware disponíveis.

Por último, mas não menos importante, o modelo de servidor específico e outras técnicas de programação usadas para implementar um programa de servidor da web podem influenciar o desempenho e, em particular, o nível de escalabilidade que pode ser alcançado sob carga pesada ou ao usar hardware de ponta (muitas CPUs, discos, etc. .).

As performances de um servidor web são normalmente avaliadas usando uma ou mais das ferramentas de teste de carga automatizadas disponíveis .

Limites de carga

Um servidor web (instalação de programa) geralmente tem limites de carga predefinidos, porque ele pode lidar apenas com um número limitado de conexões de cliente simultâneas (geralmente entre 2 e várias dezenas de milhares para cada processo de servidor web ativo, veja também o problema C10k e o Problema C10M ) e pode atender apenas a um determinado número máximo de solicitações por segundo, dependendo de:

  • suas próprias configurações,
  • o tipo de solicitação HTTP médio,
  • se o conteúdo solicitado é estático ou dinâmico,
  • se o conteúdo é armazenado em cache ou compactado ,
  • a velocidade média da rede entre os clientes e o servidor web,
  • o número de conexões TCP ativas ,
  • as limitações de hardware e software ou configurações do sistema operacional do (s) computador (es) em que o servidor web é executado.

Quando um servidor da web está próximo ou acima de seus limites, ele fica sobrecarregado e pode parar de responder.

Causas de sobrecarga

A qualquer momento, os servidores da web podem ficar sobrecarregados devido a:

  • Excesso de tráfego legítimo da web. Milhares ou até milhões de clientes conectando-se ao site em um curto intervalo, por exemplo, efeito Slashdot ;
  • Ataques distribuídos de negação de serviço . Um ataque de negação de serviço (ataque DoS) ou ataque distribuído de negação de serviço (ataque DDoS) é uma tentativa de tornar um computador ou recurso de rede indisponível para seus usuários pretendidos;
  • Worms de computador que às vezes causam tráfego anormal por causa de milhões de computadores infectados (não coordenados entre eles)
  • Os worms XSS podem causar alto tráfego por causa de milhões de navegadores ou servidores da Web infectados;
  • Bots da Internet Tráfego não filtrado / limitado em grandes sites com muito poucos recursos (largura de banda, etc.);
  • Lentidão da Internet (rede) (devido a perdas de pacotes, etc.) para que as solicitações do cliente sejam atendidas mais lentamente e o número de conexões aumente tanto que os limites do servidor sejam atingidos;
  • Indisponibilidade parcial de servidores Web ( computadores ). Isso pode acontecer devido a manutenção ou atualização necessária ou urgente, falhas de hardware ou software, falhas de back-end (por exemplo, banco de dados ), etc .; nesses casos, os servidores da Web restantes podem receber muito tráfego e ficar sobrecarregados.

Sintomas de sobrecarga

Os sintomas de um servidor da web sobrecarregado são:

  • As solicitações são atendidas com atrasos (possivelmente longos) (de 1 segundo a algumas centenas de segundos).
  • O servidor da web retorna um código de erro HTTP , como 500, 502, 503, 504, 408 ou mesmo um 404 intermitente .
  • O servidor da web recusa ou redefine (interrompe) as conexões TCP antes de retornar qualquer conteúdo.
  • Em casos muito raros, o servidor da web retorna apenas uma parte do conteúdo solicitado. Esse comportamento pode ser considerado um bug , mesmo que normalmente surja como um sintoma de sobrecarga.

Técnicas anti-sobrecarga

Para superar parcialmente os limites de carga acima da média e evitar a sobrecarga, os sites mais populares usam técnicas comuns como:

  • Ajustando os parâmetros do sistema operacional para recursos e uso de hardware.
  • Ajustando os parâmetros do (s) servidor (es) da web para melhorar a segurança, o desempenho, etc.
  • Implantar técnicas de cache da web (não apenas para conteúdos estáticos, mas, sempre que possível, também para conteúdos dinâmicos).
  • Gerenciando o tráfego de rede, usando:
  • Usando diferentes nomes de domínio e endereços IP para servir conteúdos diferentes (estáticos e dinâmicos) por servidores da web separados, por exemplo:
    • http://static.example.com
    • http://www.example.com
  • Usando diferentes nomes de domínio, endereços IP e computadores para separar arquivos grandes ( download.*) de arquivos pequenos e médios ( static.*) e do site dinâmico principal (talvez onde alguns conteúdos são armazenados em um banco de dados backend ) ( www.*); a ideia é ser capaz de armazenar em cache totalmente arquivos pequenos e médios e servir com eficiência arquivos grandes ou grandes (mais de 10 - 1000 MB) (sem afetar o desempenho do site dinâmico sob carga pesada) usando configurações diferentes para cada (grupo) de computadores servidores da web, por exemplo:
    • http://download.example.com
    • http://static.example.com
    • http://www.example.com
  • Usando vários servidores web (programas) por computador, cada um vinculado à sua própria placa de rede e endereço IP .
  • Usando muitos servidores da web (computadores) agrupados atrás de um balanceador de carga para que atuem ou sejam vistos como um grande servidor da web.
  • Adicionar mais recursos de hardware (ou seja , RAM , discos rápidos ) a cada computador.
  • Usar programas de computador mais eficientes para servidores web (ou seja, programas que também usam técnicas de cópia zero , etc.).
  • Usando a interface de gateway de servidor da Web mais eficiente para processar solicitações dinâmicas.
  • Usar outras técnicas de programação e soluções alternativas , especialmente se houver conteúdo dinâmico envolvido, para acelerar as respostas HTTP.
  • Usando as versões mais recentes e eficientes de HTTP (por exemplo, além de usar HTTP / 1.1 comum, também habilitando HTTP / 2 e talvez HTTP / 3 também, sempre que o software de servidor da web disponível tiver suporte confiável para os dois últimos protocolos), a fim de reduzir muito o número de TCP / Conexões IP iniciadas por cada cliente e o tamanho dos dados trocados (por causa da representação de cabeçalhos HTTP mais compacta, compactação de dados, etc.); de qualquer forma, mesmo que os protocolos HTTP (2 e 3) mais novos geralmente gerem menos tráfego de rede para cada solicitação / resposta de dados, eles podem exigir mais recursos do sistema operacional (ou seja, RAM e CPU) usados ​​pelo software do servidor web (por causa dos dados criptografados , compressão de dados em a mosca e outros detalhes de implementação) .

Quota de mercado

O LAMP (pacote de software) (aqui adicionalmente com Squid ), composto inteiramente de software livre e de código aberto , é uma solução de alto desempenho e alta disponibilidade para um ambiente hostil
Gráfico:
Participação de mercado de todos os sites dos principais servidores da web 2005–2018

Fevereiro de 2021

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2021 Web Server Survey .

produtos Fornecedor Por cento
nginx NGINX, Inc. 34,54%
Apache Apache 26,32%
IIS Microsoft 6,5%
OpenResty OpenResty Software Foundation 6,36%
Servidor Cloudflare Cloudflare, Inc. 5,0%

Todos os outros servidores da web são usados ​​por menos de 5% dos sites.

Fevereiro de 2020

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2020 Web Server Survey .

produtos Fornecedor Por cento
nginx NGINX, Inc. 36,48%
Apache Apache 24,5%
IIS Microsoft 14,21%
OpenResty OpenResty Software Foundation 4,00%
GWS Google 3,18%
Servidor Cloudflare Cloudflare, Inc. 3,0%

Todos os outros servidores da web são usados ​​por menos de 3% dos sites.

Fevereiro de 2019

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2019 Web Server Survey .

produtos Fornecedor Por cento
IIS Microsoft 28,42%
Apache Apache 26,16%
nginx NGINX, Inc. 25,34%
GWS Google 1,66%

Todos os outros servidores da web são usados ​​por menos de 1% dos sites.

Julho de 2018

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2018 Web Server Survey .

produtos Fornecedor Por cento
IIS Microsoft 34,50%
Apache Apache 27,45%
nginx NGINX, Inc. 24,32%
GWS Google 1,20%

Todos os outros servidores da web são usados ​​por menos de 1% dos sites.

Fevereiro de 2017

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2017 Web Server Survey .

produtos Fornecedor Janeiro de 2017 Por cento Fevereiro de 2017 Por cento Mudar Cor do gráfico
IIS Microsoft 821.905.283 45,66% 773.552.454 43,16% -2,50 vermelho
Apache Apache 387.211.503 21,51% 374.297.080 20,89% -0,63 Preto
nginx NGINX, Inc. 317.398.317 17,63% 348.025.788 19,42% 1,79 verde
GWS Google 17.933.762 1,00% 18.438.702 1,03% 0,03 azul

Fevereiro de 2016

Abaixo estão as estatísticas mais recentes da participação de mercado de todos os sites dos principais servidores da Internet da Netcraft fevereiro 2016 Web Server Survey .

produtos Fornecedor Janeiro de 2016 Por cento Fevereiro de 2016 Por cento Mudar Cor do gráfico
Apache Apache 304.271.061 33,56% 306.292.557 32,80% 0,76 Preto
IIS Microsoft 262.471.886 28,95% 278.593.041 29,83% 0,88 vermelho
nginx NGINX, Inc. 141.443.630 15,60% 137.459.391 16,61% -0,88 verde
GWS Google 20.799.087 2,29% 20.640.058 2,21% -0,08 azul

Apache, IIS e Nginx são os servidores web mais usados ​​na World Wide Web.

Veja também

Referências

links externos