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
:
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:
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. Neste 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
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:
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:
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:
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 desconectar 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 desativar esse comportamento digitando:
Para reativar 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 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:
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 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:
Em seguida, crie uma página de exemplo index.html
usando o nano
ou seu editor favorito:
Dentro, adicione o seguinte HTML de exemplo:
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
:
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 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:
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 parayour_domain
ewww.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:
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.
...
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 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óriosites-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ó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 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