Escolher um Servidor Web: Apache versus Nginx

Escolher um Servidor Web: Apache versus Nginx

Partilhar

Conheça os principais pontos a ter em conta no momento de escolher um servidor Web entre os dois mais utilizados no mundo das TI: Apache versus Nginx.

Ao escolher um servidor para fornecer serviços web na nossa infraestrutura ou na dos nossos clientes, muitas vezes deparamo-nos com a situação de querer selecionar o servidor que nos forneça o melhor desempenho, gere o menor peso administrativo e, portanto, que garanta um maior uptime (tempo de serviço), minimizando assim os tempos de queda ou de inatividade do serviço.

Dentro dos servidores web disponíveis no mercado existem atualmente dois que se destacam por estas características e por outras que iremos analisar posteriormente. Estes são Apache e Nginx, servidores web que derrotaram completamente outros competidores como Microsoft ISS, Litespeed… que ficaram para trás.

Neste artigo apresentamos diferentes avaliações, vamos rever pontos fortes e destacar alguns pontos fracos de cada um deles para podermos arriscar e defender a nossa escolha. Atenção, o nosso ponto de vista não é uma verdade absoluta. Depois de ler este artigo e outras fontes, pode não concordar connosco e decidir fazer uma escolha diferente. Apenas expomos a nossa visão e alguns fatores objetivos.

Gráfico: Evolução do uso de servidores web no cenário atual (Fonte w3tech)

Gráfico: Evolução do uso de servidores web no cenário atual (Fonte w3tech)

 

NOTA: Pode consultar os dados de utilização de cada servidor web e a sua evolução desde 1 de julho de 2019 até hoje no seguinte URL.

Antes de falar de questões mais técnicas, vamos centrar-nos num ponto a ter em conta: o navegador a partir do qual os nossos “utilizadores” nos visitam. Podemos conhecer isto consultando as informações nos nossos sistemas, que recolhem o tipo de navegador, além de outros dados. Mas se não tivermos dados anteriores, podemos dar uma vista de olhos nos gráficos de uso do browser em alguns dos sites que fornecem informações deste tipo.

Gráfico. Quota de uso de navegadores web em maio de 2022 (Fonte Wikipedia)

Gráfico. Quota de uso de navegadores web em maio de 2022 (Fonte Wikipedia)

 

Comparação e Características:  Apache versus Nginx

 

Licenças de Apache versus Nginx:

Um ponto interessante a ter em conta ao considerar a aquisição ou instalação de qualquer software é o tipo de licença sob a qual o software em questão foi lançado.

Neste caso, o Apache é um produto de código aberto (open source) que foi lançado em 1996 sob a licença Apache e tem uma longa história com grande apoio da comunidade, o que significa um amplo suporte, um grande número de testers e developers que corrigem qualquer possível vulnerabilidade ou erro que sejam detetados.

Por outro lado, Nginx é um projeto que surgiu em 2002, mas não foi lançado ao público em geral sob licença BSD até 2004 e, desde então, o apoio da comunidade tem crescido. Da mesma forma, existe uma versão comercial do Nginx desde que foi adquirido pela F5 Networks em 2019, portanto esta pode ser uma boa opção para quem prefere ter suporte profissional para escalar os seus problemas. 

Neste caso, pelo menos do nosso ponto de vista, acreditamos que o Apache nos dá maior segurança, pois tem mais experiência e uma comunidade que acompanha o projeto há mais de 25 anos.

Além disso, embora ambos tenham licenças baseadas em projetos de software livre, o projeto Apache está muito mais alinhado com o que a Free Software Foundation (FSF) descreve como uma boa licença, principalmente porque a licença Apache v2.0 é compatível com a licença GPLv3, e não com a versão GPLv2, pois existem certos termos e requisitos que não são permitidos na GPLv2. 

Por outro lado, o Nginx e sua licença BSD possuem uma certa lassidão que pode apresentar problemas de licenciamento, entre outros, nos projetos.

Logo do Apache

 

Performance do Apache vs. Nginx:

Um ponto de grande interesse para todos os administradores de sistemas e serviços web é conhecer o desempenho que o nosso servidor terá, por isso vamos avaliar os dois pontos que o compõem: a velocidade do serviço e o consumo de recursos.

Em relação à velocidade do serviço, o Apache sofre com uma maior lentidão do serviço à medida que o número de utilizadores aumenta, embora isso não seja percebido até que existam milhares de conexões simultâneas. Não existindo essa circunstância, ambos os servidores apresentam um desempenho muito bom e uma velocidade de resposta semelhante com um baixo volume de utilizadores

No caso do consumo de recursos, acontece a mesma coisa. Quando temos poucos utilizadores, o consumo de ambas as opções é mais ou menos o mesmo, mas à medida que o número de conexões aumenta, os recursos de que o Apache precisa também disparam. O mesmo não acontece com o Nginx, pois escala linearmente e não exponencialmente, como acontece com o Apache. 

Por estas duas razões, neste ponto, o Nginx é o vencedor.

Logo do Nginx

 

Simplicidade de administração​: Apache o Nginx?

Ao comparar a facilidade de configuração inicial e administração, deparámo-nos com uma pergunta difícil de responder, pois alguns de nós já temos um longo relacionamento com o Apache (no meu caso remonta ao ano 2000). Portanto, depois de 22 anos com um relacionamento intermitente com este servidor web, será muito difícil dizer que o Apache é mais complicado que o Nginx, porque já tenho os comandos, caminhos e configurações básicas gravadas na memória.

Mesmo assim, posso dizer, sem medo de errar, que para um técnico que tenha um primeiro contacto com os dois servidores, será muito mais fácil adaptar-se ao Apache do que ao Nginx. Isto deve-se, entre outras coisas, à estrutura clara dos ficheiros de configuração.

Encontramos um contra para o Apache: depois de trabalhar com vários hosts no Nginx, nota-se que este é muito mais fácil de administrar, com uma estrutura de elementos separados que facilita imenso a gestão. Claro que isto acontece apenas em casos com vários hostings no mesmo servidor. Para tudo o resto, preferimos o Apache. 

 

Flexibilidade:

Antes de começar a avaliar, diremos que consideramos flexibilidade a capacidade de adaptar estes servidores às nossas necessidades, para que estejam o mais alinhados possível com o que procuramos. Para fazer isso, nesta secção, falaremos sobre a capacidade de instalação em diferentes plataformas, a capacidade de integração com outras ferramentas e a capacidade de configuração para adaptá-lo a diferentes funções.

Ambos os servidores podem ser implementados em diferentes sistemas operativos, como GNU/Linux, MS/Windows, Docker, etc. Mas a interação com algumas ferramentas com as quais o Apache se integra ainda não está disponível para o Nginx e é aqui que os anos adicionais de existência podem dar ao Apache a vantagem.

Nesta área, devemos destacar a enorme quantidade de módulos disponíveis para o Apache, que encontramos enumerados aqui e que conferem ao Apache uma notável vantagem sobre o Nginx em termos de flexibilidade.

 

Segurança do Apache vs. Nginx​:

A segurança é um problema muito sério hoje em dia, já que cada vez mais serviços estão online e cada vez mais invasores estão dispostos a tirar proveito de qualquer vulnerabilidade. Por isso, é um ponto que, apesar de ser o último deste artigo, para nós é o que assume maior importância.

O design de ambos os servidores é muito orientado para a segurança e a evolução ao longo dos anos é clara e contínua, chegando ao presente com estruturas robustas, estáveis ​e seguras que garantem (na medida do possível) uma continuidade de operações sem grandes choques. No entanto, infelizmente, com nenhum deles é possível garantir que conseguirá a invulnerabilidade dos sistemas. Além disso, terá sempre de prestar atenção às diferentes atualizações e patches que são publicados para aproveitar essa camada de segurança adicional que estas atualizações podem fornecer. 

Tanto o Nginx como o Apache publicam periodicamente relatórios de incidentes de segurança, vulnerabilidades, etc. E, claro, publicam atualizações e patches com a mesma frequência, embora o Apache possa ser um pouco mais produtivo, principalmente por causa da sua grande comunidade.

Neste sentido, tanto o Apache como o Nginx fizeram os trabalhos de casa e, por esse motivo, acreditamos que estão mais ou menos ao mesmo nível. Não há um vencedor claro nesta secção.

 

Conclusão… Apache ou Nginx, qual devo escolher?

Se fizermos uma breve revisão do que foi exposto ao longo deste pequeno artigo, podemos ver que, no que diz respeito às licenças, o Apache é muito melhor visto devido à sua licença alinhada com a GPLv3, enquanto a BSD apresenta alguns problemas devido à lassidão dos seus termos. Em termos de desempenho, o Nginx apresenta melhor desempenho para grandes volumes de conexões, enquanto em termos de facilidade de configuração e administração e flexibilidade, o Apache seria melhor. Finalmente, quando se trata de segurança, ambos estão em pé de igualdade.

Em resumo, recomendamos o uso do Apache, a menos que esperemos grandes volumes de visitas e não tenhamos um grande volume de recursos, pois nesse caso o Nginx teria um rendimento muito melhor.

Por fim, devemos dizer que, apesar de podermos preferir um determinado servidor web, o critério do leitor deve prevalecer sempre, e há diversos motivos para ter mais ou menos afinidade com um ou com outro: conhecer melhor o sistema, preferir o tipo de projeto, etc. poderá ter maior afinidade por um ou outro por diversos motivos, como conhecer melhor o sistema ou por ter uma maior afinidade com o projeto.

Categorias:Cloud e sistemas

Apache Nginx Web

Outros artigos que podem interessar-lhe

21 de Fevereiro de 2024
Como empresa de software, é possível que tenha sentido atração pela reputação, variedade de serviços e solidez de algum
21 de Fevereiro de 2024
Para muitas empresas de software, ter uma infraestrutura própria significa independência e controlo, bem como uma potencial fonte de
21 de Fevereiro de 2024
Para um ISV, escolher o fornecedor de serviços cloud ideal é uma decisão crucial que pode impactar a satisfação