Como Instalar o Nginx no Ubuntu 22.04

Introdução

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

Neste guia, vamos discutir como instalar o Nginx no seu servidor Ubuntu 22.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.

Implemente suas aplicações do GitHub usando a Plataforma de Aplicativos DigitalOcean. Deixe a DigitalOcean focar em dimensionar sua aplicação.

Pré-requisitos

Antes de começar este guia, você deve ter um usuário regular, não-root, com privilégios sudo configurados 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 22.04.

Também é opcionalmente desejável 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 a DigitalOcean, consulte nossa Introdução ao DNS da DigitalOcean.

Quando 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.

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

  1. sudo apt update
  2. sudo apt install nginx

Pressione S quando solicitado para confirmar a instalação. Se for solicitado a reiniciar algum serviço, pressione ENTER para aceitar os padrões e continuar. O apt instalará o Nginx e quaisquer dependências necessárias em seu servidor.

Passo 2 – Ajustando o Firewall

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

Liste as configurações de aplicativos que o 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. Neste 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

No final do processo de instalação, o Ubuntu 22.04 inicia o Nginx. O servidor web deve estar pronto e em execução.

Podemos 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 Fri 2022-03-01 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 é 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, pode encontrá-lo usando a ferramenta icanhazip.com, que lhe dará o 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, digite-o na barra de endereços do seu navegador:

http://your_server_ip

Você deve receber a página inicial padrão do Nginx:

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

Passo 4 – Gerenciando o Processo do Nginx

Agora que você tem seu servidor web funcionando, vamos 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 apenas fazendo alterações de configuração, o Nginx muitas vezes pode recarregar sem desconectar 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

Agora você 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 22.04 possui 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ório 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 maneira, 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 modificou 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, concedendo apenas permissões de leitura e execução a grupos e outros, você pode inserir o seguinte comando:

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

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

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

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

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

Para que o Nginx sirva esse conteúdo, é necessário criar um bloco de servidor com as diretrizes 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 nome do nosso domínio.

Em seguida, vamos habilitar o arquivo criando um link dele para o 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/

Nota: O Nginx usa 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 depois excluir o atalho do diretório sites-enabled enquanto mantém o bloco do servidor em sites-available se quiser habilitá-lo.

Dois blocos de servidor estão agora 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):

  • your_domain: Responderá a solicitações para your_domain e www.your_domain.
  • default: 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 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 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 do Nginx:

  1. sudo nginx -t

Se não houver problemas, reinicie o Nginx para habilitar suas alterações:

  1. sudo systemctl restart nginx

O Nginx agora deve estar servindo o nome do seu domínio. Você pode testar isso navegando para http://seu_domínio, onde você deve ver algo assim:

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 pelo 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 sejam 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 vinculação com o 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 refatoração 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 a servir e as tecnologias que deseja utilizar para criar uma experiência mais rica.

Se desejar criar uma pilha de aplicativos mais completa, consulte o artigo Como Instalar o Linux, Nginx, MySQL, PHP (pilha LEMP) no Ubuntu 22.04.

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

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