Sobes.tech
Middle

O que acontece no Nginx?

sobes.tech IA

Resposta da IA

Uma aplicação escrita em Ruby (por exemplo, usando o framework Rails ou Sinatra) é executada num servidor de aplicações web (por exemplo, Puma, Unicorn, Passenger). O Nginx atua como servidor frontal, recebendo as requisições HTTP entrantes dos clientes e redirecionando-as para o servidor de aplicações.

As funções principais do Nginx neste contexto:

  1. Proxy de requisições: O Nginx atua como um proxy reverso. Recebe as requisições dos navegadores dos clientes e as encaminha para o servidor web da aplicação Ruby. Após obter a resposta do servidor de aplicações, o Nginx devolve-a ao cliente.
  2. Serviço de ficheiros estáticos: O Nginx pode servir eficientemente ficheiros estáticos (CSS, JavaScript, imagens) diretamente, evitando sobrecarregar o servidor web da aplicação Ruby. Isto descarrega a aplicação e melhora o desempenho.
  3. Balanceamento de carga: Se tiver várias instâncias do servidor web da aplicação Ruby, o Nginx pode distribuir as requisições entre elas, garantindo tolerância a falhas e escalabilidade.
  4. Terminação SSL: O Nginx pode gerir a encriptação SSL/TLS, descarregando essa tarefa do servidor web da aplicação Ruby.
  5. Caching: O Nginx pode armazenar em cache as respostas, acelerando o carregamento das páginas para requisições repetidas.
  6. Compressão (gzip): O Nginx pode comprimir as respostas antes de as enviar ao cliente, reduzindo a quantidade de dados transmitidos.

A configuração do Nginx para uma aplicação Ruby geralmente inclui:

  • Definir um host virtual para o seu domínio.
  • Configurar o proxy de requisições para o servidor web da aplicação Ruby (por exemplo, via socket ou porta TCP).
  • Definir caminhos para ficheiros estáticos.
  • Configurar SSL/TLS (se necessário).
  • Configurar o balanceamento de carga (se necessário).
# Exemplo de configuração simples de Nginx para Rails com Puma
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    location / {
        # Proxy de requisições para Puma através de socket
        proxy_pass http://unix:/path/to/your/app/shared/sockets/puma.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;
    }

    location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
        # Serviço de ficheiros estáticos
        root /path/to/your/app/public;
        expires max;
        add_header Cache-Control public;
    }

    # Adicione outros blocos location para outros recursos estáticos, se necessário
}

Resumindo, o Nginx funciona como uma ferramenta multifuncional à frente do servidor web da aplicação Ruby, melhorando o seu desempenho, segurança e escalabilidade.