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
:
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:
Você deve obter uma listagem 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 permita o tráfego que você configurou. No momento, só precisaremos 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
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:
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:
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:
Para iniciar o servidor web quando estiver parado, digite:
Para parar e depois iniciar o serviço novamente, digite:
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:
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:
Para reabilitar o serviço para iniciar na inicialização, você pode digitar:
Você agora 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 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:
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 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:
Em seguida, crie uma página index.html
de exemplo usando o nano
ou o seu editor favorito:
Dentro dela, adicione o seguinte HTML de exemplo:
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
:
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 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 paraseu_domínio
ewww.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:
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.
...
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:
Se não houver problemas, reinicie o Nginx para habilitar suas alterações:
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óriosites-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ó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.
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