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 seu 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ê instalará o Nginx em 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 de sudo configurados em 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, tornando possível instalá-lo a partir de ferramentas convencionais de gerenciamento de pacotes.

Primeiro, atualize seu índice de pacotes local para refletir as últimas mudanças do upstream:

  1. sudo apt update

Em seguida, instale o pacote nginx:

  1. sudo apt install nginx

Confirme a instalação, digitando Y, em seguida, pressione Enter para prosseguir. O apt então irá 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ê deve 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ê deve obter uma lista 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)

É recomendável 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 o tráfego HTTP permitido 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á deverá estar em funcionamento.

Você pode verificar com o sistema de inicialização systemd para garantir que o serviço está 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 é solicitar realmente uma página do Nginx.

Você pode acessar a página inicial padrão do Nginx para confirmar que o software está funcionando corretamente navegando até o endereço IP do seu servidor. Se você não souber o endereço IP do seu servidor, 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 retorno. 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ços do seu navegador:

http://your_server_ip

A página de destino padrão do Nginx deve aparecer em seu navegador da web:

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

Passo 4 – Gerenciando o Processo do Nginx

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

Para parar seu 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 frequentemente pode recarregar sem desconectar as 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 desabilitar esse comportamento digitando:

  1. sudo systemctl disable nginx

Para reabilitar 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, blocos de servidor (semelhantes a 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 nome do seu próprio domínio. Para aprender mais sobre configurar um nome de domínio com DigitalOcean, veja nossa introdução ao DNS do 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 difícil de gerenciar se você estiver hospedando vários sites. Em vez de modificar /var/www/html, crie uma estrutura de diretórios dentro de /var/www para o site your_domain, mantendo /var/www/html como o diretório padrão a ser servido se uma solicitação do cliente não corresponder a outros sites.

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

A seguir, atribua a propriedade do diretório com a variável de ambiente $USER, que deve referenciar seu usuário atual do sistema:

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

As permissões da sua raiz web devem estar corretas se você não modificou o valor de seu umask, mas você pode ter certeza digitando:

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

A seguir, crie uma página index.html de exemplo usando nano ou seu editor de texto preferido:

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

Por dentro, 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>

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

Para que o Nginx sirva este conteúdo, você deve criar um bloco de servidor com as diretivas corretas que apontem para sua raiz web personalizada. Em vez de modificar diretamente o arquivo de configuração padrão, crie 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 atualizada de root para seu novo diretório e o server_name para seu nome de 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 seu arquivo de configuração personalizada 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 quaisquer solicitações na porta 80 que não correspondam aos outros dois blocos.

Para evitar um possível problema de memória do bucket de 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 seguinte saída será exibida:

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

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

  1. sudo systemctl restart nginx

O Nginx agora deve estar servindo seu nome de domínio. Você pode testar isso navegando para 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 – Se Familiarizando com Diretórios e Arquivos Importantes do Nginx

Agora que você sabe como gerenciar o serviço Nginx em si, pode dedicar um 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 principal de configuração do Nginx. Isso pode ser modificado para fazer alterações na configuração global do Nginx.
  • /etc/nginx/sites-available/: O diretório onde 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 bloco de servidor é feita neste diretório e, em seguida, habilitada vinculando-a ao outro diretório.
  • /etc/nginx/sites-enabled/: O diretório onde blocos de servidor por site habilitados são armazenados. Tipicamente, esses são criados vinculando a 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 refatoração em snippets.

Registros do Servidor

  • /var/log/nginx/access.log: Cada solicitação ao seu servidor web é registrada neste arquivo de log, a menos que o Nginx esteja configurado de outra forma.
  • /var/log/nginx/error.log: Quaisquer erros do Nginx serão registrados neste log.

Conclusão

Agora que você tem seu servidor web instalado, você 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 seus usuários.

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