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 opção leve que pode ser usada tanto como servidor web quanto como proxy reverso.
Neste guia, você verá como instalar o Nginx no seu servidor Rocky Linux 9, 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.
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 o Rocky Linux 9.
Também será opcional ter registrado um nome de domínio antes de concluir as últimas etapas deste tutorial. Para saber mais sobre como configurar um nome de domínio com a DigitalOcean, consulte nosso Guia de 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 Rocky, você pode instalá-lo com um único comando, usando o gerenciador de pacotes dnf
.
Instale o pacote nginx
com o comando dnf install
:
- sudo dnf install nginx
Ao ser solicitado, digite y
para confirmar que deseja instalar o nginx
. Depois disso, o dnf
instalará o Nginx e quaisquer dependências necessárias no seu servidor.
Após a instalação ser concluída, execute os seguintes comandos para habilitar e iniciar o servidor web:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Isso fará com que o Nginx reinicie automaticamente sempre que o servidor for reiniciado. Seu novo servidor web deve estar funcionando agora, mas antes de testá-lo, provavelmente você precisará fazer uma alteração na configuração do seu firewall.
Passo 2 – Ajustando o Firewall
Se você ativou o firewall firewalld
como parte do guia de configuração inicial do servidor para o Rocky Linux 9, será necessário ajustar as configurações do firewall para permitir conexões externas no seu servidor web Nginx, que é executado na porta 80
por padrão.
Execute o seguinte comando para habilitar permanentemente conexões HTTP na porta 80
:
- sudo firewall-cmd --permanent --add-service=http
Para verificar se o serviço de firewall http
foi adicionado corretamente, você pode executar:
- sudo firewall-cmd --permanent --list-all
Você verá uma saída como esta:
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Para aplicar as mudanças, você precisará recarregar o serviço de firewall:
- sudo firewall-cmd --reload
Seu servidor web agora deve ser acessível para visitantes externos.
Etapa 3 – Verificando seu Servidor Web
Neste ponto, seu servidor web deve estar funcionando.
Você pode usar o comando systemctl status
para ter certeza de que o serviço está rodando:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
Como 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á funcionando 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 fornecerá seu endereço IP público como recebido de outro local na internet:
- curl -4 icanhazip.com
Quando você 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 inicial padrão do Nginx:
Se você está nesta página, seu servidor está funcionando 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 de gerenciamento de serviço.
Para parar seu servidor web, use systemctl stop
:
- sudo systemctl stop nginx
Para iniciar o servidor web quando ele estiver parado, use systemctl start
:
- sudo systemctl start nginx
Para parar e então iniciar o serviço novamente, use systemctl restart
:
- sudo systemctl restart nginx
Se você estiver apenas fazendo alterações de configuração, o Nginx frequentemente pode recarregar sem desconectar as conexões. Para fazer isso, use systemctl reload
:
- sudo systemctl reload nginx
Anteriormente neste tutorial, você configurou o Nginx para iniciar automaticamente quando o servidor é inicializado. Você pode desativar esse comportamento usando systemctl disable
:
- sudo systemctl disable nginx
Para reabilitar o serviço para iniciar na inicialização, você pode digitar:
- sudo systemctl enable nginx
Passo 5 – Familiarizando-se com Arquivos e Diretórios Importantes do Nginx
Agora que você sabe como gerenciar o serviço do Nginx, você deve dedicar alguns minutos para se familiarizar com alguns diretórios e arquivos importantes.
Conteúdo
/usr/share/nginx/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/usr/share/nginx/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 principal arquivo de configuração do Nginx. Isso pode ser modificado para fazer alterações na configuração global do Nginx./etc/nginx/conf.d/
: Este diretório contém arquivos de configuração de blocos de servidor, onde você pode definir os sites que estão hospedados dentro do Nginx. Uma abordagem típica é ter cada site em um arquivo separado que é nomeado após o nome de domínio do site, comoseu_domínio.conf
.
Logs 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.
Agora você deve estar pronto para configurar o site para hospedar um ou mais domínios.
Passo 6 – Configurando Blocos de Servidor (Opcional)
Ao usar o servidor web Nginx, blocos de servidor (semelhantes a hosts virtuais no Apache) podem ser usados para organizar detalhes de configuração e hospedar mais de um domínio a partir de um único servidor. No Rocky Linux 9, os blocos de servidor são definidos em arquivos .conf
localizados em /etc/nginx/conf.d
. Vamos configurar um domínio chamado seu_domínio
, mas você deve substituir isso pelo seu próprio nome de domínio.
Por padrão, o Nginx no Rocky Linux 9 está configurado para servir documentos de um diretório em /usr/share/nginx/html
. Embora isso funcione bem para um único site, pode se tornar impraticável se você estiver hospedando vários sites. Em vez de modificar /usr/share/nginx/html
, você criará uma estrutura de diretórios dentro de /var/www
para o site seu_domínio, deixando /usr/share/nginx/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 seu_domínio da seguinte forma, usando a flag -p
para criar quaisquer diretórios pai necessários:
- sudo mkdir -p /var/www/your_domain/html
Próximo passo, atribua a propriedade do diretório com a variável de ambiente $USER
, que deve fazer referência ao seu usuário atual do sistema:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Agora, você criará uma página de index.html
de exemplo para testar a configuração do bloco do servidor. O editor de texto padrão fornecido com o Rocky Linux 9 é o vi
. O vi
é um editor de texto extremamente poderoso, mas pode ser um pouco obscuro para usuários sem experiência. Talvez você queira instalar um editor mais amigável, como o nano
, para facilitar a edição de arquivos de configuração no seu servidor Rocky Linux 9:
- sudo dnf install nano
Em seguida, crie uma página de index.html
de exemplo usando o nano
ou seu editor favorito:
- nano /var/www/your_domain/html/index.html
Dentro dela, adicione o seguinte HTML de exemplo:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Salve e feche o arquivo quando terminar. Se estiver usando o nano
, você pode salvar e sair pressionando CTRL + X
, depois, quando solicitado, pressione Y
e, em seguida, Enter.
Para o Nginx servir esse conteúdo, você precisará criar um bloco do servidor com diretivas que apontem para o seu diretório web personalizado. Crie um novo bloco do servidor em /etc/nginx/conf.d/seu_domínio.conf
:
- sudo nano /etc/nginx/conf.d/your_domain.conf
Cole o seguinte bloco de configuração:
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 do root
para o nosso novo diretório e o server_name
para o nome do nosso domínio. Salve e feche o arquivo.
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.
Em seguida, teste para garantir que não haja erros de sintaxe em nenhum dos seus arquivos Nginx, usando nginx -t
:
- sudo nginx -t
Se não houver problemas, reinicie o Nginx para habilitar suas alterações:
- sudo systemctl restart nginx
Antes de testar as alterações do seu navegador, será necessário atualizar os contextos de segurança do SELinux do seu servidor para que o Nginx tenha permissão para servir conteúdo do diretório /var/www/seu_domínio
.
Esta atualização de contexto chcon
permitirá que sua raiz de documento personalizada seja servida como conteúdo HTTP:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
O Nginx deve estar agora servindo o nome do seu domínio. Você pode testar isso acessando http://seu_domínio
, onde deverá ver algo semelhante a isto:
Conclusão
Agora que você tem seu servidor web instalado, existem muitas opções para o tipo de conteúdo a ser servido e as tecnologias que você deseja usar para criar uma experiência mais rica.
Para configurar o HTTPS para o nome do seu domínio com um certificado SSL gratuito usando Let’s Encrypt, você deve seguir para Como Segurar o Nginx com Let’s Encrypt no Rocky Linux 9.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9