Como Instalar o Nginx no Ubuntu 20.04

Introdução

O Nginx é um dos servidores web mais populares do mundo e é responsável por hospedar alguns dos maiores e mais acessados sites na internet. É uma escolha leve que pode ser usada tanto como servidor web quanto como proxy reverso.

Neste guia, discutiremos como instalar o Nginx no seu servidor Ubuntu 20.04, ajustar o firewall, gerenciar o processo do Nginx e configurar blocos de servidor para hospedar mais de um domínio a partir de um único servidor.

Simplifique a implantação de aplicativos com a Plataforma de Aplicativos DigitalOcean. Implante diretamente do GitHub em minutos.

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ê pode aprender como configurar uma conta de usuário regular seguindo nosso guia de configuração inicial do servidor para Ubuntu 20.04.

Você também vai querer opcionalmente ter registrado um nome de domínio antes de concluir os últimos passos deste tutorial. Para saber mais sobre como configurar um nome de domínio com o DigitalOcean, consulte nossa Introdução ao DNS do DigitalOcean.

Quando você tiver uma conta disponível, faça login como seu usuário não root para começar.

Passo 1 – Instalando o Nginx

Como o Nginx está disponível nos repositórios padrão do Ubuntu, é possível instalá-lo a partir desses repositórios usando o sistema de empacotamento apt.

Como esta é nossa primeira interação com o sistema de empacotamento apt nesta sessão, vamos atualizar nosso índice local de pacotes para que tenhamos acesso às listagens de pacotes mais recentes. Depois, podemos instalar o nginx:

  1. sudo apt update
  2. sudo apt install nginx

Após aceitar o procedimento, o apt irá instalar o Nginx e quaisquer dependências necessárias no seu servidor.

Passo 2 – Ajustando o Firewall

Antes de testar o Nginx, o software de firewall precisa ser ajustado para permitir o acesso ao serviço. O Nginx se registra como um serviço com ufw durante a instalação, tornando simples permitir o acesso ao Nginx.

Liste as configurações de aplicativos que ufw sabe como trabalhar, digitando:

  1. sudo ufw app list

Você deve obter uma listagem dos perfis de aplicativos:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Conforme demonstrado pela saída, 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 permita o tráfego que você configurou. No momento, só precisaremos permitir o tráfego na porta 80.

Você pode habilitar isso digitando:

  1. sudo ufw allow 'Nginx HTTP'

Você pode verificar a alteração digitando:

  1. sudo ufw status

A saída indicará qual tráfego HTTP está permitido:

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 Ubuntu 20.04 inicia o Nginx. O servidor web já deve estar em funcionamento.

Podemos 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 Fri 2020-04-20 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Conforme confirmado por esta saída, 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 de entrada padrão do Nginx para confirmar que o software está em execução corretamente navegando até o endereço IP do seu servidor. Se você não conhece o endereço IP do seu servidor, pode encontrá-lo usando a ferramenta icanhazip.com, que lhe dará seu endereço IP público conforme recebido de outro local na internet:

  1. curl -4 icanhazip.com

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

http://your_server_ip

Você deverá receber a página de entrada padrão do Nginx:

Se você estiver nesta página, seu servidor está sendo executado corretamente e está pronto para ser gerenciado.

Passo 4 – Gerenciando o Processo Nginx

Agora que você tem seu servidor web em funcionamento, vamos revisar alguns comandos básicos de gerenciamento.

Para parar o 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 apenas fazendo alterações de configuração, o Nginx muitas vezes pode recarregar sem interromper 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

Você agora aprendeu comandos básicos de gerenciamento e deve estar pronto para configurar o site para hospedar mais de um domínio.

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. Vamos configurar um domínio chamado seu_domínio, mas você deve substituir isso pelo seu próprio nome de domínio.

O Nginx no Ubuntu 20.04 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 complicado se você estiver hospedando vários sites. Em vez de modificar /var/www/html, vamos criar uma estrutura de diretórios dentro de /var/www para nosso site seu_domínio, deixando /var/www/html no lugar como o diretório padrão a ser servido se uma solicitação de cliente não corresponder a nenhum outro site.

Crie o diretório para seu_domínio 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:

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

As permissões das suas raízes da web devem estar corretas se você não tiver modificado o valor do seu umask, que define as permissões padrão dos arquivos. Para garantir que suas permissões estejam corretas e permitam que o proprietário leia, escreva e execute os arquivos, enquanto concedem apenas permissões de leitura e execução para grupos e outros, você pode inserir o seguinte comando:

  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 favorito:

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

Dentro dela, 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!  The your_domain server block is working!</h1>
    </body>
</html>

Salve e feche o arquivo pressionando Ctrl+X para sair, então quando solicitado para salvar, pressione Y e depois Enter.

Para que o Nginx sirva este conteúdo, é necessário criar um bloco de servidor com as diretivas corretas. Em vez de modificar o arquivo de configuração padrão diretamente, vamos criar um novo em /etc/nginx/sites-available/seu_domínio:

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

Cole o seguinte bloco de configuração, que é semelhante ao padrão, mas atualizado para o nosso 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 que atualizamos a configuração root para o nosso novo diretório e o server_name para o nosso nome de domínio.

Em seguida, vamos habilitar o arquivo criando um link dele para o diretório sites-enabled, do qual o Nginx lê durante a inicialização:

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

Nota: O Nginx utiliza uma prática comum chamada de links simbólicos, ou symlinks, para rastrear quais dos seus blocos de servidor estão habilitados. Criar um symlink é como criar um atalho no disco, para que você possa posteriormente excluir o atalho do diretório sites-enabled enquanto mantém o bloco do servidor em sites-available se você quiser habilitá-lo.

Dois blocos de servidor estão agora habilitados e configurados para responder a solicitações com base em suas diretrizes listen e server_name (você pode ler mais sobre como o Nginx processa essas diretrizes 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, é 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. Se estiver usando o nano, você pode pesquisar rapidamente palavras no arquivo pressionando CTRL e w.

Nota: Comentar linhas de código – geralmente colocando # no início de uma linha – é outra maneira de desativá-las sem precisar realmente excluí-las. Muitos arquivos de configuração são enviados com várias opções comentadas para que possam ser habilitadas ou desabilitadas, alternando-as entre código ativo e documentação.

/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, reinicie o Nginx para habilitar suas alterações:

  1. sudo systemctl restart nginx

Agora, o Nginx deve estar servindo seu nome de domínio. Você pode testar isso navegando para http://seu_domínio, onde você deverá ver algo como isso:

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

Agora que você sabe como gerenciar o serviço Nginx em si, deve dedicar alguns minutos 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 ao modificar 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 do bloco do servidor é feita neste diretório e depois habilitada por meio de vínculo com o outro diretório.
  • /etc/nginx/sites-enabled/: O diretório onde os blocos de servidor por site habilitados são armazenados. Tipicamente, eles são criados vinculando-se 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 a ser servido e as tecnologias que deseja usar para criar uma experiência mais rica.

Se você deseja criar uma pilha de aplicativos mais completa, confira o artigo Como Instalar o Linux, Nginx, MySQL, PHP (pilha LEMP) no Ubuntu 20.04.

Para configurar o HTTPS para o nome do seu domínio com um certificado SSL gratuito usando Let’s Encrypt, você deve prosseguir para Como Proteger o Nginx com Let’s Encrypt no Ubuntu 20.04.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04