Middle
Por que instalar o Nginx antes do Ruby?
sobes.tech IA
Resposta da IA
O Nginx é instalado antes da aplicação Ruby (por exemplo, Rails ou Sinatra) pelos seguintes motivos:
- Serviço de ficheiros estáticos: O Nginx entrega de forma eficiente (mais rápido e com menor consumo de recursos) ficheiros estáticos (CSS, JS, imagens), libertando processos Ruby para lidar com pedidos dinâmicos.
- Proxy reverso: O Nginx atua como proxy reverso, aceitando todas as solicitações HTTP entrantes e redirecionando-as para os servidores Ruby (por exemplo, Puma, Unicorn) através de um protocolo (por exemplo, HTTP ou socket Unix). Isto permite gerir múltiplos processos Ruby e equilibrar a carga entre eles.
- Terminação SSL/TLS: O Nginx pode lidar com ligações SSL/TLS encriptadas, descarregando essa tarefa para a aplicação Ruby.
- Caching: O Nginx pode armazenar em cache as respostas, acelerando a entrega de conteúdo frequentemente solicitado.
- Compressão: O Nginx pode comprimir as respostas (gzip, brotli), reduzindo o volume de dados transmitidos.
- Balanceamento de carga: O Nginx pode distribuir as solicitações entrantes entre várias instâncias da aplicação Ruby, aumentando a disponibilidade e escalabilidade.
- Registo: O Nginx oferece capacidades poderosas de registo de pedidos HTTP.
- Segurança: O Nginx pode realizar funções básicas de segurança, como limitar a velocidade de pedidos, bloquear endereços IP e proteger contra certos tipos de ataques (por exemplo, DDoS ao nível HTTP).
- Separação de responsabilidades: O Nginx trata de tarefas de infraestrutura (gestão de HTTP, SSL), permitindo que a aplicação Ruby se concentre na lógica de negócio.
Exemplo de configuração do Nginx para proxy para Unicorn:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://unix:/path/to/your/app/tmp/sockets/unicorn.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Opcional: servir ativos estáticos diretamente
location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
root /path/to/your/app/public;
expires 1d;
}
}