Pular para o conteúdo
Início » Como Implantar uma Aplicação Web Usando o Servidor Nginx e Reverse Proxy

Como Implantar uma Aplicação Web Usando o Servidor Nginx e Reverse Proxy

WEB SERVER - NERD EXPERT

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.