Por que eu encontro o nginx praticamente melhor do que o apache

Por que eu encontro o nginx praticamente melhor do que o apache

De acordo com a mais recente pesquisa do Web Server da NetCraft, que foi realizada no final de 2017 (precisamente em novembro), o Apache e o Nginx são os servidores da Web de código aberto mais amplamente utilizados na Internet.

Apache é um servidor HTTP de código aberto gratuito para sistemas operacionais e Windows do tipo UNIX. Ele foi projetado para ser um servidor seguro, eficiente e extensível que fornece serviços HTTP em sincronia com os padrões HTTP predominantes.

Desde o lançamento, Apache tem sido o servidor da web mais popular na internet desde 1996. É o padrão de fato para servidores da Web no Linux e no ecossistema de código aberto. Novos usuários do Linux normalmente acham mais fácil configurar e usar.

Nginx (pronunciado 'Engine-X') é um servidor HTTP gratuito, de código aberto e de alto desempenho, proxy reverso e um servidor proxy IMAP/POP3. Assim como o Apache, ele também é executado em sistemas operacionais e janelas do tipo Unix.

Bem conhecido por seu alto desempenho, estabilidade, configuração simples e baixo consumo de recursos, ao longo dos anos se tornou tão popular e seu uso na Internet está indo para maiores alturas. Agora é o servidor da web preferido entre administradores experientes de sistemas ou mestres da web dos principais sites.

Alguns dos sites ocupados alimentados por:

  • Apache são: PayPal, BBC.com, BBC.co.Reino Unido, SSLLabs.com, Apple.com mais muito mais.
  • Nginx são: Netflix, Udemy.com, hulu, pinterest, cloudflare, wordpress.com, github, SoundCloud e muitos outros.

Já existem inúmeros recursos publicados na web sobre a comparação entre Apache e Nginx (eu realmente quero dizer 'Apache vs nginx'Artigos), muitos dos quais claramente explicam em detalhes, seus principais recursos e operações em vários cenários, incluindo medidas de desempenho em benchmarks de laboratório. Portanto, isso não será abordado aqui.

Vou simplesmente compartilhar minha experiência e pensamentos sobre todo o debate, tendo experimentado Apache e Nginx, Tanto em ambientes de produção com base nos requisitos para hospedar aplicativos da Web modernos, na próxima seção.

Razões pelas quais encontro o nginx praticamente melhor do que o Apache

A seguir, os seguintes motivos pelos quais eu prefiro o NGINX Web Server sobre o Apache para a entrega moderna de conteúdo da Web:

1. Nginx é leve

Nginx é um dos servidores da Web leve por aí. Possui pequenas pegadas em um sistema em comparação com o Apache, que implementa um vasto escopo de funcionalidade necessário para executar um aplicativo.

Como o Nginx reúne um punhado de recursos principais, ele depende de servidores web dedicados de terceiros a montante, como um back -end Apache, Fastcgi, Memcached, SCGI e UWSGI Servers ou Application Server, I I.e servidores específicos do idioma, como o nó.js, tomcat, etc.

Portanto, seu uso de memória é muito mais adequado para implantações limitadas de recursos do que Apache.

2. Nginx foi projetado para alta simultaneidade

Em oposição à arquitetura orientada a encadeamento ou processo do Apache (modelo de conexão de processo ou conexão do processo), Nginx usa uma arquitetura escalável e orientada a eventos (assíncrona). Emprega um modelo de processo responsável que seja adaptado aos recursos de hardware disponíveis.

Ele possui um processo mestre (que executa as operações privilegiadas, como a leitura e a ligação às portas) e que cria vários processos de trabalhador e auxiliar.

Os processos do trabalhador podem lidar com milhares de conexões HTTP simultaneamente, ler e gravar conteúdo no disco e se comunicar com servidores upstream. Os processos auxiliares (Cache Manager e Cache Loader) podem gerenciar operações de cache de conteúdo no disco.

Isso torna suas operações escaláveis ​​e resultando em alto desempenho. Essa abordagem de design o torna rápido e favorável para aplicações modernas. Além disso, módulos de terceiros podem ser usados ​​para estender as funcionalidades nativas no Nginx.

3. Nginx é fácil de configurar

Nginx tem uma estrutura de arquivo de configuração simples, facilitando a configuração. Consiste em módulos controlados por diretrizes especificadas no arquivo de configuração. Além disso, as diretrizes são divididas em diretivas de bloco e diretivas simples.

Uma diretiva de bloco é definida por aparelhos ( e ). Se uma diretiva de bloco puder ter outras diretivas dentro do aparelho, ela é chamada de contexto como eventos, http, servidor e local.

http servidor  

Uma diretiva simples consiste no nome e parâmetros separados por espaços e termina com um semicolon (;).

http server location/## Esta é uma diretiva simples chamada root root/var/www/hmtl/exemplo.com/;  

Você pode incluir arquivos de configuração personalizados usando a diretiva incluir, por exemplo.

http server  ## Exemplos de incluindo arquivos de configuração adicionais incluem/path/to/config/file/*.conf; incluir/path/to/config/file/ssl.conf;  

Um exemplo prático para mim foi como eu consegui configurar facilmente o NGINX para executar vários sites com diferentes versões PHP, o que foi um pouco de desafio com o Apache.

4. Nginx é um excelente proxy de front -end

Um dos usos comuns de Nginx está configurando -o como um servidor proxy, neste caso recebe solicitações HTTP dos clientes e os passa para servidores proxiados ou a montante mencionados acima, em diferentes protocolos. Você também pode modificar os cabeçalhos de solicitação do cliente enviados ao servidor proxado e configurar o buffer de respostas provenientes dos servidores proxiados.

Em seguida, recebe respostas dos servidores proxiados e os passa para os clientes. É mais fácil configurar como um servidor proxy em comparação com o Apache, pois os módulos necessários são na maioria dos casos ativados por padrão.

5. Nginx é notável para servir conteúdo estático

Conteúdo estático ou arquivos geralmente são arquivos armazenados no disco no computador servidor, por exemplo, arquivos CSS, arquivos ou imagens javascripts. Vamos considerar um cenário em que você usa o nginx como front -end para o nodejs (o servidor de aplicativos).

Embora o NodeJS Server (especificamente as estruturas de nó) tenha embutido recursos para o manuseio estático de arquivos, eles não precisam fazer um processamento intensivo para fornecer conteúdo não dinâmico, portanto, é praticamente benéfico configurar o servidor da web para servir conteúdo estático diretamente para clientes.

Nginx pode executar um trabalho muito melhor de lidar com arquivos estáticos de um diretório específico e pode impedir que os pedidos de ativos estáticos sufocam os processos do servidor upstream. Isso melhora significativamente o desempenho geral dos servidores de back -end.

6. Nginx é um balanceador de carga eficiente

Para realizar alto desempenho e tempo de atividade para aplicativos da Web modernos, pode exigir várias instâncias de aplicativos em um único ou distribuído servidores HTTP. Isso pode, por sua vez.

Hoje, o balanceamento de carga tornou -se uma abordagem amplamente usada para otimizar a utilização de recursos do sistema operacional, maximizar a flexibilidade, reduzir a latência, aumentar a taxa de transferência, alcançar a redundância e estabelecer configurações tolerantes a falhas - em várias instâncias de aplicativo.

O NGINX usa os seguintes métodos de balanceamento de carga:

  • Round-robin (Método padrão)- Solicitações para os servidores a montante são distribuídos de maneira redonda-robina (em ordem da lista de servidores no pool a montante).
  • menos conectado - Aqui, a próxima solicitação é proxiada para o servidor com o menor número de conexões ativas.
  • IP-Hash - Aqui, uma função de hash é usada para determinar qual servidor deve ser selecionado para a próxima solicitação (com base no endereço IP do cliente).
  • Hash genérico - Sob esse método, o administrador do sistema especifica um hash (ou chave) com o texto fornecido, variáveis ​​da solicitação ou tempo de execução ou sua combinação. Por exemplo, a chave pode ser um IP e porta de origem, ou URI. O NGINX distribui a carga entre os servidores a montante, gerando um hash para a solicitação atual e colocando -a contra os servidores a montante.
  • Pelo menos tempo (Nginx plus) - atribui a próxima solicitação ao servidor upstream com o menor número de conexões atuais, mas favorece os servidores com os tempos de resposta mais baixos.

7. Nginx é altamente escalável

Além disso, Nginx é uma demanda de aplicativos corporativos altamente escaláveis ​​e modernos, especialmente os aplicativos corporativos que fornecem alto desempenho e escalabilidade.

Uma empresa que se beneficia dos incríveis recursos de escalabilidade do Nginx é Cloudflare, Ele conseguiu escalar seus aplicativos da Web para lidar com mais de 15 bilhões de visualizações mensais de página com uma infraestrutura relativamente modesta, de acordo com Matthew Prince, co-fundador e CEO de Cloudfare.

Para uma explicação mais abrangente, confira este artigo no blog nginx: nginx vs. Apache: nossa visão de uma pergunta de uma década.

Conclusão

Ambos Apache e Nginx não podem ser substituídos um pelo outro, eles têm seus pontos fortes e fracos. No entanto, Nginx Oferece uma tecnologia poderosa, flexível, escalável e segura para alimentar sites modernos e aplicativos da Web de maneira confiável e eficiente. Qual é a sua opinião? Informe -nos através do formulário de feedback abaixo.