Servidor Apache HTTP
Desenvolvido por | Apache Software Foundation |
---|---|
Primeira versão | 1995 |
Última versão | 2.4.46 (5 de agosto de 2020) |
Versão avançada | 2.5.0-alpha (8 de novembro de 2017) |
Depósito | svn.apache.org/repos/asf/httpd/httpd |
Escrito em | VS |
Sistema operacional | Multi plataforma |
línguas | inglês |
Modelo | servidor web |
Licença | Licença Apache versão 2.0 |
Local na rede Internet | httpd.apache.org |
O software livre Apache HTTP Server ( Apache ) é um servidor HTTP criado e mantido dentro da Apache Foundation . Até abril de 2019, era o servidor HTTP mais popular da World Wide Web . Ele é distribuído sob os termos da licença Apache .
Apache apareceu em Abril de 1995. No início, essa era uma coleção de correções e adições ao servidor NCSA HTTPd 1.2, que era de domínio público e o servidor HTTP mais popular na época. Desta origem, muitas pessoas afirmam que o nome Apache vem de um servidor com remendos , ou "um servidor com remendos ". Posteriormente, o Apache foi completamente reescrito, portanto, na versão 2, não há vestígios de NCSA HTTPd.
Inicialmente, o Apache era a única alternativa séria e gratuita ao servidor HTTP da Netscape ( iPlanet , agora Sun ONE ). Desde aAbril de 1996, de acordo com o estudo em andamento da Netcraft , o Apache se tornou o servidor HTTP mais popular da Internet .
Participação de mercado do Apache:
O Apache versão 2 possui vários avanços importantes em relação à versão 1, incluindo suporte para várias plataformas ( Windows , Linux e UNIX , entre outros), suporte para processos leves do UNIX , uma nova API e suporte a IPv6 .
A Apache Foundation ( Apache Software Foundation ou ASF ) foi criada em 1999 a partir do grupo Apache ( Apache Group ) que criou o servidor em 1995 . Desde então, muitos outros softwares úteis para a World Wide Web foram desenvolvidos junto com o servidor HTTP.
O Apache funciona principalmente em sistemas operacionais UNIX ( Linux , Mac OS X , Solaris , BSD e UNIX ) e Windows . A versão do Windows só é considerada estável a partir da versão 1.2 do Apache. O Apache é usado por muitos produtos, incluindo WebSphere da IBM , bem como Oracle Corporation .
O Apache é projetado para oferecer suporte a muitos módulos, dando-lhe funcionalidades adicionais: interpretação de Perl , PHP , Python e Ruby , servidor proxy , Interface de gateway comum , Server Side Includes , reescrita de URL , negociação de conteúdo, protocolos de comunicação adicionais, etc. No entanto, deve-se notar que a existência de muitos módulos Apache complica a configuração do servidor web. Na verdade, as melhores práticas recomendam carregar apenas módulos úteis: muitas vulnerabilidades de segurança que afetam apenas os módulos do Apache são descobertas regularmente.
As possibilidades de configuração do Apache são um recurso carro-chefe. O princípio é baseado em uma hierarquia de arquivos de configuração, que podem ser gerenciados de forma independente. Esse recurso é particularmente útil para hosts que podem servir aos sites de vários clientes usando um único servidor HTTP . Para os clientes, essa funcionalidade é tornada visível pelo arquivo .htaccess .
Dentre as ferramentas que auxiliam na manutenção do Apache, os arquivos de log podem ser analisados por meio de diversos scripts e softwares livres como AWStats , Webalizer ou W3Perl . Diversas interfaces gráficas facilitam a configuração do servidor.
Esses dois modos principais de operação alteram notavelmente o desempenho do servidor HTTP.
Historicamente, o Apache funciona no prefork , o que significa que um processo pai iniciado com direitos estendidos ( raiz ) inicia processos filho, cada um dos quais tratará de um certo número de solicitações do cliente. No entanto, no Linux, a multiplicação de processos causa um aumento no consumo de recursos (memória, descritores de arquivo).
No modo de trabalho , o Apache inicia threads que irão lidar com as solicitações de entrada. A diferença é que este é um modo mais preventivo no qual o processo pai prepara os recursos para seus threads. Módulos desenvolvidos por terceiros, ou bibliotecas usadas por esses módulos, podem não ser projetados para funcionar em um ambiente multi-threaded; neste caso, eles podem ser uma fonte de mau funcionamento se forem usados com o modo de trabalho .
Desde a versão 2.4, o módulo de evento está disponível em produção. Isso é derivado do modo de trabalho , exceto que os threads não apenas atendem a uma conexão do cliente, mas podem executar várias tarefas independentemente da conexão. Assim, as noções de KeepAlivesão melhor gerenciadas no sentido de que um thread não espera mais que a conexão seja encerrada para servir a outro. Mais claramente, o thread atende a um pedido e não a uma conexão.
Módulos: prefork.c, worker.c, event.c
Através do mod_proxy, entre outros, é possível usar o Httpd Server como um Proxy real .
Um dos usos mais interessantes consiste no balanceamento de carga , seja no contexto de alta disponibilidade, seja para obter melhor desempenho. As habilidades de proxy reverso são suficientemente desenvolvidas para um lançamento suave na produção a partir da versão 2.1.
Módulos: mod_proxy, mod_proxy_balancer, mod_proxy_http, mod_proxy_ajp, mod_proxy_connect