Como Instalar o Nginx no Debian 10

Introdução

O Nginx é um servidor web gratuito e de código aberto usado para hospedar sites e aplicativos de todos os tamanhos. O software é conhecido por ter baixo impacto nos recursos de memória, alta escalabilidade e sua arquitetura modular e orientada a eventos, que pode oferecer desempenho seguro e previsível. Mais do que apenas um servidor web, o Nginx também funciona como um balanceador de carga, um cache HTTP e um proxy reverso.

Neste guia, você irá instalar o Nginx no seu servidor Debian 10.

Pré-requisitos

Antes de começar este guia, você deve ter um usuário regular, não-root, com privilégios sudo configurado no seu servidor. Você também deve ter um firewall ativo. Você pode aprender como configurar isso seguindo nosso guia de configuração inicial do servidor para Debian 10.

Passo 1 – Instalando o Nginx

O Nginx está disponível nos repositórios de software padrão do Debian, o que torna possível instalá-lo a partir de ferramentas de gerenciamento de pacotes convencionais.

Primeiro, atualize o índice do pacote local para refletir as últimas alterações upstream:

  1. sudo apt update

Em seguida, instale o pacote nginx:

  1. sudo apt install nginx

Confirme a instalação, digitando Y, e depois pressione Enter para prosseguir. O apt então instalará o Nginx e quaisquer dependências necessárias no seu servidor.

Passo 2 – Ajustando o Firewall

Antes de testar o Nginx, é necessário modificar as configurações do firewall para permitir acesso externo às portas web padrão. Supondo que você seguiu as instruções nos pré-requisitos, você deverá ter um firewall UFW configurado para restringir o acesso ao seu servidor.

Durante a instalação, o Nginx se registra com o UFW para fornecer alguns perfis de aplicativos que podem ser usados para habilitar ou desabilitar o acesso ao Nginx através do firewall.

Liste os perfis de aplicativos ufw digitando:

  1. sudo ufw app list

Você deverá obter uma listagem dos perfis de aplicativos:

Output
Available applications: ... Nginx Full Nginx HTTP Nginx HTTPS ...

Como você pode ver, existem três perfis disponíveis para o Nginx:

  • Nginx Completo: Este perfil abre tanto a porta 80 (tráfego web normal, não criptografado) quanto a porta 443 (tráfego criptografado TLS/SSL)
  • Nginx HTTP: Este perfil abre apenas a porta 80 (tráfego web normal, não criptografado)
  • Nginx HTTPS: Este perfil abre apenas a porta 443 (tráfego criptografado TLS/SSL)

Recomenda-se que você habilite o perfil mais restritivo que ainda permitirá o tráfego que você configurou. Como você ainda não configurou o TLS/SSL para o seu servidor neste guia, você só precisará permitir o tráfego para HTTP na porta 80.

Você pode habilitar isso digitando:

  1. sudo ufw allow 'Nginx HTTP'

Você pode verificar a mudança digitando:

  1. sudo ufw status

O que aparece são os tráfegos HTTP permitidos na saída:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Passo 3 – Verificando seu Servidor Web

Ao final do processo de instalação, o Debian 10 inicia o Nginx. O servidor web já deveria estar funcionando.

Você pode verificar com o sistema de inicialização systemd para garantir que o serviço esteja em execução digitando:

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-06-28 18:42:58 UTC; 49s ago Docs: man:nginx(8) Main PID: 2729 (nginx) Tasks: 2 (limit: 1167) Memory: 7.2M CGroup: /system.slice/nginx.service ├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2730 nginx: worker process

Esta saída revela que o serviço foi iniciado com sucesso. No entanto, a melhor maneira de testar isso é realmente solicitar uma página do Nginx.

Você pode acessar a página inicial padrão do Nginx para confirmar que o software está sendo executado corretamente navegando até o endereço IP do seu servidor. Se você não souber o endereço IP do seu servidor, você pode digitar isso no prompt de comando do seu servidor:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Você receberá algumas linhas de volta. Você pode tentar cada uma no seu navegador da web para ver se funcionam.

Quando tiver o endereço IP do seu servidor, insira-o na barra de endereço do seu navegador:

http://your_server_ip

A página inicial padrão do Nginx deve aparecer no seu navegador da web:

Esta página está incluída no Nginx para mostrar que o servidor está funcionando corretamente.

Passo 4 – Gerenciando o Processo Nginx

Agora que você tem seu servidor web funcionando, você pode revisar alguns comandos básicos de gerenciamento.

Para parar o servidor web, digite:

  1. sudo systemctl stop nginx

Para iniciar o servidor web quando estiver parado, digite:

  1. sudo systemctl start nginx

Para parar e depois iniciar o serviço novamente, digite:

  1. sudo systemctl restart nginx

Se você estiver fazendo alterações de configuração, o Nginx pode muitas vezes recarregar sem perder conexões. Para fazer isso, digite:

  1. sudo systemctl reload nginx

Por padrão, o Nginx está configurado para iniciar automaticamente quando o servidor é inicializado. Se isso não for o que você deseja, você pode desativar esse comportamento digitando:

  1. sudo systemctl disable nginx

Para reativar o serviço para iniciar na inicialização, você pode digitar:

  1. sudo systemctl enable nginx

Passo 5 – Configurando Blocos de Servidor (Opcional)

Ao usar o servidor web Nginx, os bloco de servidores (semelhante aos hosts virtuais no Apache) podem ser usados para encapsular detalhes de configuração e hospedar mais de um domínio em um único servidor. Nos comandos a seguir, substitua your_domain pelo seu próprio nome de domínio. Para saber mais sobre como configurar um nome de domínio com a DigitalOcean, consulte nossa introdução ao DNS da DigitalOcean.

O Nginx no Debian 10 tem um bloco de servidor habilitado por padrão que está configurado para servir documentos de um diretório em /var/www/html. Embora isso funcione bem para um único site, pode se tornar impraticável se você estiver hospedando vários sites. Em vez de modificar /var/www/html, crie uma estrutura de diretório dentro de /var/www para o site your_domain, deixando /var/www/html no lugar como o diretório padrão a ser servido se uma solicitação do cliente não corresponder a nenhum outro site.

Crie o diretório para your_domain da seguinte forma, usando a flag -p para criar quaisquer diretórios pai necessários:

  1. sudo mkdir -p /var/www/your_domain/html

Em seguida, atribua a propriedade do diretório com a variável de ambiente $USER, que deve fazer referência ao seu usuário de sistema atual:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

As permissões da sua raiz da web devem estar corretas se você não tiver modificado o valor do seu umask, mas você pode garantir digitando:

  1. sudo chmod -R 755 /var/www/your_domain

Em seguida, crie uma página index.html de exemplo usando o nano ou o seu editor de texto preferido:

  1. nano /var/www/your_domain/html/index.html

No interior, adicione o seguinte HTML de exemplo:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain</title>
    </head>
    <body>
        <h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
    </body>
</html>

Guarde e feche o arquivo quando terminar. No nano, você pode fazer isso pressionando CTRL + X, depois Y, e depois ENTER.

Para que o Nginx sirva este conteúdo, você deve criar um bloco de servidor com as diretivas corretas que apontam para sua raiz web personalizada. Em vez de modificar o arquivo de configuração padrão diretamente, faça um novo em /etc/nginx/sites-available/seu_domínio:

  1. sudo nano /etc/nginx/sites-available/your_domain

Adicione o seguinte bloco de configuração, que é semelhante ao padrão, mas atualizado para seu novo diretório e nome de domínio:

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

Observe a configuração root atualizada para seu novo diretório e o server_name para o nome do seu domínio. Lembre-se de substituir seu_domínio pelo seu nome de domínio real.

Em seguida, habilite este bloco de servidor criando um link simbólico para o seu arquivo de configuração personalizado dentro do diretório sites-enabled, que o Nginx lê durante a inicialização:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Seu servidor agora tem dois blocos de servidor habilitados e configurados para responder a solicitações com base em suas diretivas listen e server_name (você pode ler mais sobre como o Nginx processa essas diretivas aqui):

  • seu_domínio: Responderá a solicitações para seu_domínio e www.seu_domínio.
  • padrão: Responderá a qualquer solicitação na porta 80 que não corresponda aos outros dois blocos.

Para evitar um possível problema de memória do bucket hash que pode surgir ao adicionar nomes de servidor adicionais à sua configuração, é necessário ajustar um único valor no arquivo /etc/nginx/nginx.conf. Abra o arquivo:

  1. sudo nano /etc/nginx/nginx.conf

Encontre a diretiva server_names_hash_bucket_size e remova o símbolo # para descomentar a linha:

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Salve e feche o arquivo quando terminar.

Em seguida, teste para garantir que não haja erros de sintaxe em nenhum dos seus arquivos Nginx:

  1. sudo nginx -t

Se não houver problemas, a saída será a seguinte:

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Assim que o teste de configuração passar, reinicie o Nginx para habilitar suas alterações:

  1. sudo systemctl restart nginx

O Nginx deve estar agora servindo o nome do seu domínio. Você pode testar isso navegando até http://seu_domínio. O HTML personalizado que você criou na pasta /var/www/seu_domínio/html/index.html deve ser renderizado aqui:

Passo 6 – Familiarizando-se com Arquivos e Diretórios Importantes do Nginx

Agora que você sabe como gerenciar o serviço Nginx em si, pode dedicar algum tempo para se familiarizar com alguns diretórios e arquivos importantes.

Conteúdo

  • /var/www/html: O conteúdo web real, que por padrão consiste apenas na página padrão do Nginx que você viu anteriormente, é servido a partir do diretório /var/www/html. Isso pode ser alterado modificando os arquivos de configuração do Nginx.

Configuração do Servidor

  • /etc/nginx: O diretório de configuração do Nginx. Todos os arquivos de configuração do Nginx residem aqui.
  • /etc/nginx/nginx.conf: O arquivo de configuração principal do Nginx. Isso pode ser modificado para fazer alterações na configuração global do Nginx.
  • /etc/nginx/sites-available/: O diretório onde os blocos de servidor por site podem ser armazenados. O Nginx não usará os arquivos de configuração encontrados neste diretório, a menos que estejam vinculados ao diretório sites-enabled. Tipicamente, toda a configuração de blocos de servidor é feita neste diretório e depois habilitada vinculando-a ao outro diretório.
  • /etc/nginx/sites-enabled/: O diretório onde os blocos de servidor por site habilitados são armazenados. Tipicamente, esses são criados vinculando-se aos arquivos de configuração encontrados no diretório sites-available.
  • /etc/nginx/snippets: Este diretório contém fragmentos de configuração que podem ser incluídos em outros lugares na configuração do Nginx. Segmentos de configuração potencialmente repetíveis são bons candidatos para serem refatorados em snippets.

Registos do Servidor

  • /var/log/nginx/access.log: Cada pedido ao seu servidor web é registado neste ficheiro de registo, a menos que o Nginx esteja configurado de outra forma.
  • /var/log/nginx/error.log: Quaisquer erros do Nginx serão registados neste registo.

Conclusão

Agora que tem o seu servidor web instalado, tem muitas opções para o tipo de conteúdo que pode servir e as tecnologias que pode usar para criar uma experiência mais rica para os seus utilizadores.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10