Introdução
O Nginx é um dos servidores web mais populares do mundo e é responsável por hospedar alguns dos maiores e mais movimentados sites da 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 Nginx e configurar blocos de servidor para hospedar mais de um domínio a partir de um único servidor.
Simplifique o deploy de aplicativos com a Plataforma de Aplicativos DigitalOcean. Faça o deploy 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.
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 o DigitalOcean, consulte nossa Introdução ao DigitalOcean DNS.
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 ter acesso às listagens de pacotes mais recentes. Depois, podemos instalar o nginx
:
Após aceitar o procedimento, 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 ajustado 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:
Você deverá obter uma lista dos perfis de aplicativos:
OutputAvailable 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 permitirá o tráfego que você configurou. Agora, só precisamos permitir o tráfego na porta 80.
Você pode habilitar isso digitando:
Você pode verificar a alteração digitando:
A saída indicará qual tráfego HTTP está permitido:
OutputStatus: 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 20.04 inicia o Nginx. O servidor web já deve estar em funcionamento.
Podemos verificar com o sistema init systemd
para garantir que o serviço está em execução digitando:
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 é 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 conhece o endereço IP do seu servidor, pode encontrá-lo usando a ferramenta icanhazip.com, que fornecerá seu endereço IP público conforme recebido de outra localização na Internet:
Quando tiver o endereço IP do seu servidor, insira-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 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 funcionando, vamos revisar alguns comandos básicos de gerenciamento.
Para parar seu servidor web, digite:
Para iniciar o servidor web quando estiver parado, digite:
Para parar e então iniciar o serviço novamente, digite:
Se você estiver apenas fazendo alterações de configuração, o Nginx frequentemente pode ser recarregado sem interromper as conexões. Para fazer isso, digite:
Por padrão, o Nginx é configurado para iniciar automaticamente quando o servidor é iniciado. Se isso não for o que você deseja, você pode desabilitar esse comportamento digitando:
Para reabilitar o serviço para iniciar na inicialização, você pode digitar:
Agora você aprendeu comandos básicos de gerenciamento e deve estar pronto para configurar o site para hospedar mais de um domínio.
Passo 5 – Configurando Blocos de Servidor (Recomendado)
Ao usar o servidor web Nginx, blocos de servidor (semelhantes aos hosts virtuais no Apache) podem ser usados para encapsular detalhes de configuração e hospedar mais de um domínio a partir de um único servidor. Vamos configurar um domínio chamado your_domain, 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 é 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 o nosso site your_domain, mantendo /var/www/html
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 your_domain da seguinte forma, usando a opção -p
para criar quaisquer diretórios pai necessários:
Em seguida, atribua a propriedade do diretório com a variável de ambiente $USER
:
As permissões das suas raízes da web devem estar corretas se você não modificou o valor do seu umask
, que define permissões de arquivo padrão. 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:
Em seguida, crie uma página index.html
de exemplo usando o nano
ou seu editor favorito:
Dentro, adicione o seguinte HTML de exemplo:
Salve e feche o arquivo pressionando Ctrl+X
para sair, então quando solicitado para salvar, Y
e então Enter
.
Para que o Nginx sirva esse 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
:
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:
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:
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 posteriormente você possa excluir o atalho do diretório sites-enabled
enquanto mantém o bloco de 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):
seu_domínio
: Responderá a solicitações paraseu_domínio
ewww.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 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:
Encontre a diretiva server_names_hash_bucket_size
e remova o símbolo #
para descomentar a linha. Se estiver usando o nano, você pode procurar rapidamente por 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.
...
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:
Se não houver problemas, reinicie o Nginx para habilitar suas alterações:
O Nginx agora deve estar servindo seu nome de domínio. Você pode testar isso navegando até 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 próprio serviço do Nginx, 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 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óriosites-enabled
. Tipicamente, toda a configuração do bloco do servidor é feita neste diretório e então habilitada por meio de links para 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óriosites-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 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 o 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 desenvolver um stack de aplicativos mais completo, confira o artigo Como Instalar Linux, Nginx, MySQL, PHP (LEMP stack) no Ubuntu 20.04.
Para configurar 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