O Nginx é um servidor web open-source popular que serve páginas da web aos clientes. Quando você acessa um site (como www.google.com), o servidor web entrega as páginas HTML, CSS e arquivos JavaScript para o cliente, ou seja, o usuário.
Em resumo, o Nginx é um servidor web que atende às páginas da web aos clientes conforme a necessidade.
Compatível com vários sistemas operacionais, incluindo Linux, Windows e macOS, o Nginx é frequentemente usado em conjunto com outras tecnologias da web, como PHP, Python e Ruby on Rails.
Por Que o Nginx?
Alto Desempenho: O Nginx é conhecido por seu alto desempenho e baixo uso de recursos. Ele é projetado para lidar com um grande número de conexões e solicitações simultâneas, tornando-o uma excelente escolha para sites e aplicativos da web com muito tráfego.
Escalabilidade: O Nginx pode ser facilmente escalado horizontalmente, adicionando mais servidores para lidar com o aumento do tráfego. Ele também suporta balanceamento de carga, distribuindo o tráfego uniformemente entre os servidores.
Flexibilidade: O Nginx possui uma arquitetura modular, o que significa que pode ser facilmente estendido e personalizado com vários módulos para atender a diferentes necessidades.
Segurança: O Nginx possui recursos de segurança integrados, como criptografia SSL/TLS e suporte a protocolos de comunicação seguros. Ele também tem a capacidade de bloquear tráfego malicioso e prevenir ataques comuns, como ataques DDoS.
Facilidade de Uso: Comparado a outros servidores web, o Nginx é relativamente fácil de configurar e implantar.
Arquitetura do Nginx
A arquitetura do Nginx consiste em um processo mestre e vários processos secundários, conhecidos como processos de trabalho. Esses processos de trabalho ajudam a distribuir a carga no servidor, distribuindo o tráfego entre eles.
Por exemplo, se um site estiver sendo executado em uma porta específica e muitas pessoas tentarem acessá-lo, sem o Nginx, o site poderá travar devido à sobrecarga. No entanto, com o Nginx, o servidor distribuirá a carga entre os processos de trabalho, garantindo que o site continue funcionando sem problemas.
Em resumo, a arquitetura do Nginx é projetada para fornecer alto desempenho e escalabilidade, mantendo-se flexível e fácil de configurar.
Mais Recursos do Nginx
Reverse Proxy
Suponha que haja um site executando em uma porta específica no host local e você deseja executá-lo em produção sem violar a segurança. Você pode usar um proxy reverso para criar uma ponte e tornar a porta acessível para todos os usuários.
Um proxy reverso é um servidor que fica entre os dispositivos dos clientes e um ou mais servidores da web, encaminhando as solicitações do cliente para o servidor apropriado e retornando a resposta do servidor para o cliente. O cliente não percebe que a resposta está vindo de um servidor diferente daquele para o qual enviou a solicitação.
Balanceamento de Carga
Essa técnica distribui o tráfego de rede entrante entre vários servidores para garantir alta disponibilidade e confiabilidade de um serviço.
Redirecionamento de URL, Indexação e Armazenamento em Cache
O redirecionamento de URL encaminha um URL para outro.
A indexação envolve adicionar páginas da web ao banco de dados de um mecanismo de busca para que possam ser exibidas nos resultados da pesquisa.
O armazenamento em cache é o processo de armazenar dados frequentemente acessados em um cache para que possam ser servidos mais rapidamente.
Prática
Configuração do Ambiente
Vamos usar um ambiente AWS. Primeiro, crie uma instância AWS EC2 e adicione regras de tráfego de entrada para HTTP e HTTPS. Depois, acesse a instância via SSH.
Atualize a instância com o seguinte comando:
sudo apt-get update
Instale o Nginx:
sudo apt install nginx
Verifique se o Nginx está em execução:
systemctl status nginx
Implantação da Aplicação
Suponha que você queira implantar uma aplicação Django usando Docker. Clone o repositório de código-fonte:
git clone https://github.com/rajani103/django-notes-app.git
Instale o Docker:
sudo apt install docker.io
Verifique o status do Docker:
systemctl status docker
Dê permissão ao usuário atual para acessar o Docker:
sudo usermod -aG docker $USER
sudo reboot
Aqui está o Dockerfile da aplicação:
FROM python:3.9
WORKDIR /app/backend
COPY requirements.txt /app/backend
RUN pip install -r requirements.txt
COPY . /app/backend
EXPOSE 8000
CMD python /app/backend/manage.py runserver 0.0.0.0:8000
Inicie o processo de construção da imagem:
docker build -t notes-app .
Crie um contêiner usando a imagem:
docker run -d -p 8000:8000 notes-app:latest
Acesse a aplicação no navegador usando o endereço IP da instância EC2:
curl -L http://<Endereço-IP>:8000
Configuração do Proxy Reverso
Para permitir o acesso externo à aplicação, configure um proxy reverso no Nginx. Acesse o diretório de configuração do Nginx:
cd /etc/nginx/sites-enabled
Atualize o arquivo de configuração padrão:
sudo nano default
Adicione o seguinte trecho para configurar o proxy:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Salve o arquivo e reinicie o Nginx:
sudo service nginx restart
Agora a aplicação estará acessível via proxy reverso usando o endereço IP da instância EC2.
Implantar uma aplicação web usando o servidor Nginx e um proxy reverso é uma maneira eficaz de fornecer alta disponibilidade, escalabilidade e segurança. O Nginx, com sua arquitetura flexível e recursos avançados, é uma ferramenta poderosa para garantir o desempenho ideal de suas aplicações da web. Ao seguir os passos mencionados neste guia, você estará pronto para lançar suas aplicações com confiança, oferecendo uma experiência excelente aos seus usuários.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.