Compartilhe

avatar

Então, eu queria ter meu próprio site em um VPS. Um VPS é basicamente um computador que você aluga em algum data center. Você obtém um terminal Linux e descobre.

Continuei vendo a palavra “nginx” em todos os lugares. Eu não tinha ideia do que era. Meu amigo disse “é um servidor web”, mas isso ainda não me ajudou muito. Então me aprofundei e passei um fim de semana aprendendo. Aqui está o que descobri.

O que é mesmo o Nginx?

Nginx (você diz “engine-x”) é um software executado em seu servidor. Ele escuta as pessoas que visitam seu site. Quando alguém digita seu URL no navegador, o nginx é quem responde e envia de volta a página.

Essa é a versão simples. Mas o nginx faz muito mais do que isso. Ele também pode atuar como intermediário entre os visitantes e o aplicativo real. Ele pode compactar arquivos antes de enviá-los para que as páginas carreguem mais rapidamente. Ele lida com HTTPS. Ele até bloqueia o tráfego ruim se você configurá-lo corretamente.

Grandes empresas como a Netflix o utilizam. Se ele consegue lidar com o tráfego da Netflix, com certeza pode cuidar do seu blog.

Obtendo um servidor primeiro

Antes de instalar o nginx, você precisa de um servidor. Eu tenho um VPS. Os mais baratos começam em 15 dólares por mês ou menos. Você deseja pelo menos 1 GB de RAM e alguns núcleos de CPU se espera tráfego real.

Vá com o Ubuntu. É o Linux mais fácil para iniciantes e a maioria dos tutoriais o utiliza.

Instalando o Nginx

Esta parte é realmente muito fácil. Dois comandos:

sudo apt update
sudo apt install nginx

Feito. O Nginx está instalado. Você pode verificar se está funcionando:

sudo systemctl status nginx

Se você vir “ativo (em execução)” em verde, você está bem. Você pode abrir o endereço IP do seu servidor em um navegador e verá a página de boas-vindas padrão do nginx.

Outros comandos que você usará o tempo todo:

sudo systemctl restart nginx   
sudo systemctl reload nginx    
sudo systemctl enable nginx    

O arquivo de configuração

Nginx mora em /etc/nginx/. O arquivo de configuração principal está em /etc/nginx/nginx.conf. É aqui que você controla tudo.

Aqui está uma configuração de base sólida. Você pode copiar isto e funciona bem para a maioria dos sites:

events {
    worker_connections 1024;
}
http {
    sendfile on;
    tcp_nopush on;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    add_header X-Content-Type-Options nosniff;
    add_header X-Frame-Options DENY;
    server_tokens off;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    gzip on;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/javascript;
    include /etc/nginx/sites-enabled/*;
}

O gzip on linha é importante. O Gzip compacta os arquivos antes que o nginx os envie. As páginas podem carregar de 2 a 5 vezes mais rápido apenas com essa configuração.

O server_tokens off line esconde qual versão do nginx você está executando. Menos informações para hackers.

Configurando Seu Domínio

Cada site que você hospeda precisa de seu próprio arquivo de configuração. Você coloca isso /etc/nginx/sites-available/.

Crie um arquivo para seu domínio:

sudo touch /etc/nginx/sites-available/yourdomain.com
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/

O segundo comando cria um link simbólico. É assim que o nginx sabe como usar essa configuração.

Agora abra o arquivo e adicione isto. Substitua seudominio.com pelo seu domínio real:

server {
    listen 80;
    server_name yourdomain.com;
    return 301 https://yourdomain.com$request_uri;
}
server {
    listen 443 ssl http2;
    server_name yourdomain.com;
    ssl_certificate /etc/ssl/certificate.crt;
    ssl_certificate_key /etc/ssl/private.key;
    root /var/www/yourdomain.com;
    index index.php index.html;
    location ~* .(css|js|jpg|png|gif|svg|webp|woff2)$ {
        expires 30d;
        add_header Cache-Control "public";
    }
    client_max_body_size 10M;
}

O primeiro bloco força todos a usar HTTPS. O segundo bloco é o seu site real. O expires 30d parte diz aos navegadores para armazenar imagens e CSS em cache por 30 dias para que visitantes recorrentes carreguem seu site com mais rapidez.

Depois de editar qualquer configuração, teste-a primeiro:

sudo nginx -t

Se disser “teste bem-sucedido”, você está bem. Então recarregue:

sudo systemctl reload nginx

Uploads de arquivos e o erro 413

O limite de upload padrão do nginx é 1 MB. Se alguém tentar fazer upload de uma foto e receber o erro “413 Request Entity Too Large”, é por isso.

O client_max_body_size linha em sua configuração controla isso. Defina-o com base nas necessidades do seu site:

  • Formulários de contato simples: 5 MB é suficiente
  • Blog com upload de imagens: 10 MB a 64 MB
  • Site de comércio eletrônico: 50 MB a 100 MB
  • Plataforma de vídeo: 500 MB a 2 GB

Você também pode definir limites diferentes para diferentes partes do seu site:

location /upload {
    client_max_body_size 100M;
}

Isso é mais inteligente do que aumentar o limite global e ficar aberto a pessoas que enviam arquivos enormes em qualquer lugar.

Certificados SSL

HTTPS não é mais opcional. Os navegadores mostram avisos assustadores para sites HTTP. O Google também classifica os sites HTTPS em uma posição mais elevada.

Obtenha um certificado SSL grátis em Vamos criptografar. É fácil de configurar e renovar automaticamente.

Coloque os arquivos do certificado em /etc/ssl/ e aponte sua configuração do nginx para eles, como mostrei acima. É isso.

Por que tudo isso é importante para o desempenho

Quando configurei o nginx corretamente em meu VPS, as páginas carregaram visivelmente mais rápido. Aqui está o que fez a maior diferença:

A compactação Gzip reduziu o tamanho dos meus arquivos CSS e JavaScript em mais da metade. HTTP/2 (habilitado com http2 na diretiva listen) permite que os navegadores carreguem vários arquivos ao mesmo tempo em uma conexão. O cache do navegador significava que os visitantes que retornavam não precisavam baixar as imagens que já possuíam. Juntas, essas coisas fizeram uma diferença real.

Você pode ler mais sobre ajuste de desempenho e obter os arquivos de configuração completos no guia nginx completo original que se aprofunda em cada etapa.

A coisa do Robots.txt e do Sitemap

Mais dois arquivos necessários para SEO. Coloque um robots.txt na raiz do seu site:

User-agent: *
Disallow: /private/
Allow: /
Sitemap: 

Isso informa aos bots dos mecanismos de pesquisa quais páginas rastrear e onde está o mapa do site.

Seu sitemap.xml lista todas as páginas do seu site com uma prioridade. Sua página inicial ganha 1,00. As páginas normais recebem 0,8. As postagens do blog recebem 0,6. Isso ajuda o Google a entender a estrutura do seu site.

Nginx vs Apache: qual você deve escolher?

As pessoas discutem muito sobre isso. A resposta curta: use nginx.

O Apache existe há mais tempo e mais hospedagem compartilhada o utiliza. Mas o nginx usa bem menos memória e lida com mais conexões ao mesmo tempo. Se você estiver executando seu próprio VPS, o nginx é a melhor escolha para quase todas as situações.

A comparação do SitePoint entre WebGPU e WebGL para inferência do navegador mostra como escolher a arquitetura certa (não apenas a familiar) pode proporcionar um desempenho de 3 a 8 vezes melhor. A mesma ideia se aplica aqui. O Nginx foi desenvolvido para a forma como a web funciona agora. O Apache foi construído para um modelo mais antigo.

Se você quiser se aprofundar na arquitetura real de como os servidores da web lidam com solicitações e por que isso é importante, o guia SitePoint para IA local primeiro tem uma ótima seção sobre computação de GPU e arquitetura orientada a eventos que explica os mesmos conceitos que o nginx usa para lidar com milhares de conexões de uma vez.

Lista de verificação rápida antes de entrar no ar

Antes de apontar seu domínio para seu servidor, faça o seguinte:

  • Nginx instalado e em execução.
  • Configuração testada com sudo nginx -t.
  • Certificado SSL instalado e redirecionamentos HTTP para HTTPS.
  • server_tokens off na sua configuração.
  • Compressão Gzip ativada.
  • Cache do navegador definido para arquivos estáticos.
  • client_max_body_size defina algo que faça sentido para o seu site.
  • Robots.txt e sitemap.xml criados e vinculados.

É isso mesmo. Nginx parece intimidante, mas depois de entender a estrutura do arquivo de configuração, é bastante lógico. A configuração é apenas arquivos de texto. Você os edita, testa, recarrega o nginx e suas alterações estão ativas.

Passei muito tempo com medo dessas coisas. Não é tão difícil quando você realmente tenta.


Written by

Categorias