Nginx (pronuncia-se engine X) é um servidor HTTP de alta performance com código aberto e totalmente livre. Foi criado em 2002, pelo russo Igor Sysoev, e teve seu primeiro release liberado em 2004. O Nginx é usado em 6.55% (13.5M) dos domínios ativos no mundo, e esse número vem crescendo exponencialmente.

O Nginx é conhecido por ser muito rápido, estável, com uma grande variedade de módulos, com uma configuração muito simples além de consumir poucos recursos computacionais, como CPU e memória. Ele vem sendo utilizado em diversas aplicações, desde de um simples blog pessoal rodando em um VPS com recursos limitados, até aplicações críticas de alta disponibilidade.
Antes de tudo devemos entender como o nginx consegue ser tão performático utilizando-se de tão poucos recursos. Diferente do servidores tradicionais, nginx não utiliza threads para estabelecer conexões. Ao invés disso, ele utiliza uma arquitetura assíncrona, muito mais escalável, orientada a eventos. Isso permite que ele atenda a milhares de conexões simultâneas com pouco uso de memória e cpu. Essa arquitetura orientada a evendos é conhecida como Asynchronous non-blocking I/O e foi concebida em resposta ao The C10K problem.
O Nginx pode ser extendido com um grande variedade de módulos, que devem ser compilados junto com o código principal, antes de serem utilizados. Os mais importantes estão integrados a versão principal, e já podem ser utilizados na instalação padrão, dentre eles destaco: FastCGI, Gzip, Memcached, Proxy, Rewrite, SSI, Upstream.
Principais características do Nginx:
- Entrega de conteúdo estático, index e listagem de diretórios
- Proxy com balanceamento de carga (round-robin ou iphash) com fail-over
- Suporte a servidores FastCGI remotos com balanceamentos de carga
- Compressão com gzip
- SSI com inclusão de arquivos estáticos ou dinâmicos (através de subrequests)
- SSL
- Poderoso proxy cache reverso, com escrita em disco e configuração fácil e eficiente
- Integração direta com Memcache ou Redis
Características avançadas do Nginx:
- Servidores virtuais baseados em IP ou nome
- Suporta conexão keep-alive ou pipeline
- Configuração flexível, com timeouts e buffers
- Recarrega o arquivo de configurações, sem derrubar as conexões ativas
- Página especias de erros HTTP 400-599
- Reescrita, muito eficiente, de URLs com uso de expressões regulares
- Controle de acesso por IP ou password
- Limitação de velocidade para downloads
Arquitetura específica do Nginx:
- Um processo principal com um ou vários workers, que efetivamente manipulam as conexões
- Suporte a diferentes formas de manipulação de sockets assíncrona: kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select and poll
- Suporte a chamadas de sistema sendfile(): sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+) and sendfilev (Solaris 8 7/01+)
- Manipulação eficiente de memória, necessita de somente 2.5M de RAM para manter 10000 conexões keep-alive inativas
- Mínimo de operações de cópia de memória
Vivemos uma era onde os desafios computacionais são enormes, e esse cenário só tende a piorar. Cada dia temos mais gente acessando e se utilizando dos benefícios da internet, e isso aumenta a complexidade das aplicações, tendo em vista que a grande maioria delas terão que ser desenvolvidas para atender milhares de usuários simultaneamente. E é nesse ponto que entra o Nginx, muito mas que um simples webserver, ele possui características e features indispensáveis no desenho de soluções simples, perfomáticas e escaláveis.
sobre mim
Analista de sistemas, comecei a trabalhar em 2005 como desenvolvedor web, em petrópolis, minha cidade natal. Em 2007 ingressei na globo.com, onde tive a oportunidade participar de grandes projetos, como o portal móvel da globo.com, Temporeal e Cartola. Possuo conhecimentos avançados em Python, Java e PHP, com foco em performance e escalabilidade para sistemas de grande porte, além de ser entusiasta de metodologias e práticas ágeis de desenvolvimento. Participo de algumas das maiores comunidades de desenvolvimento, colaborando com alguns projetos open source. Tive o prazer de palestrar em alguns dos maiores eventos do brasil, como LinuxCon Brasil 2010 e Python Brasil 2010. Hoje em dia trabalho na minha própria empresa, onde venho me aventurando no mundo empreendedor.
@marcelnicolay
- Casuarina dando uma aula nos arcos da Lapa!! #carnavalderua 4 days ago
- I just unlocked the "Greasy Spoon" badge on @foursquare! Bring on the burgers! http://t.co/iW378n1m 1 week ago
- #bols na passarela da barra, sentido barra, e tambem na saída do túnel acústico sentido zs, eles não respeitam nem greve! 1 week ago
- More updates...
Posting tweet...