O NGINX (pronunciado Engine-X) é um servidor web de código aberto, leve, de alto desempenho ou servidor proxy. Nginx usado como servidor proxy reverso para HTTP, HTTPS, SMTP, IMAP, protocolos POP3, e também é usado para balanceamento de carga de servidores e Cache HTTP. O Nginx acelera o conteúdo e a entrega de aplicativos, melhora a segurança, facilita a disponibilidade e escalabilidade para os sites mais movimentados da Internet.

Em termos simples, o Nginx é apenas um tipo de software que é usado em servidores web para atender a pedidos simultâneos. Anteriormente, costumávamos instalar o Apache em servidores web para lidar com essas funções; mas como o mundo está crescendo e exigindo mais coisas ao mesmo tempo veio o Nginx.

nginx[1]

Por que o Apache é lento? Como Nginx surgiu?

O Apache foi lançado em 1995 quando não havia o conceito multitarefa. Mais tarde, quando a necessidade de multitarefa foi exigida, o MPM (Multi-Processing Module) foi adicionado no Apache para superar esse problema. Mas com esta nova característica, o consumo de memória começou a aumentar nos próximos anos;  sites gigantes como Google passaram a receber milhões de visitas todos os dias. Então, a necessidade de uma nova plataforma ou de uma mudança no Apache era necessária.

Esse problema foi nomeado como Problema C10K.

Então, Igor Sysoev iniciou o desenvolvimento de Nginx em 2002 para superar o mesmo problema, e o Nginx foi lançado publicamente em 2004.

Agora (em 2014) o Nginx hospeda quase mais de 12% (22 mil milhões) de sites ativos em todos os domínios.

Como o Nginx funciona?

O Nginx segue o processo baseado em eventos; Ele não cria thread individual de solicitação para cada processo, como o Apache, mas segue inteligentemente os eventos de um processo. Abaixo está a demonstração de um servidor Nginx que gerencia solicitações simultâneas de arquivos MP3 e MP4.

how-nginx-works-demonstration[1]

O Nginx dividiu o trabalho em Worker Connections e Worker Process. Aqui as worker connections estão gerenciando o pedido feito e a resposta obtida pelos usuários no servidor web; ao mesmo tempo, esses pedidos são passados ​​para o processo pai, que é o worker process.

Uma worker process única pode lidar com cerca de 1024 conexões por vez.

Finalmente, o worker process transfere os pedidos para o Nginx Master Process, que responde rapidamente a uma única requisição.

nginx-architecture[1]

O Nginx é assíncrono; isso significa que cada pedido no Nginx pode ser executado simultaneamente sem se entupir como se fosse um cano de água. Então, desta forma, o Nginx melhora os recursos praticamente compartilhados sem estar dedicado e bloqueado a uma conexão específica.

É por isso que o Nginx é capaz de fazer o mesmo trabalho com menos quantidade de memória e utiliza essa memória de forma otimizada.

nginx[1]

In https://www.atulhost.com/nginx

Advertisements