O Nginx é um dos servidores Web mais populares no mundo e é responsável por hospedar alguns dos maiores e mais populares sites na Internet. Ele é mais amigável do que o Apache em termos de recursos na maioria dos casos e pode ser usado como um servidor Web ou como proxy reverso.
Neste guia, vamos discutir como instalar o Nginx em um servidor CentOS 8.
Para seguir este guia, você precisará de acesso a um servidor CentOS 8 como um usuário não raiz com privilégios sudo, e um firewall ativo instalado no seu servidor. Para configurar isso, siga nosso guia Configuração inicial de servidor para o CentOS 8.
Para instalar o Nginx, usaremos o gerenciador de pacotes dnf
, que é o novo gerenciador de pacotes padrão no CentOS 8.
Instale o pacote nginx
com:
- sudo dnf install nginx
Quando solicitado, digite y
para confirmar se deseja instalar o nginx
. Depois disso, o dnf
instalará o Nginx e quaisquer dependências necessárias em seu servidor.
Após a instalação terminar, execute os seguintes comandos para habilitar e iniciar o servidor:
- sudo systemctl enable nginx
- sudo systemctl start nginx
Isso fará com que o Nginx seja iniciado na inicialização do sistema.
Caso tenha habilitado o firewall firewalld
como mostrado em nosso guia de configuração inicial de servidor para o CentOS 8, você precisará ajustar as configurações do firewall, de modo a permitir conexões externas em seu servidor Web Nginx, que utiliza a porta 80
por padrão.
Execute o seguinte comando para habilitar permanentemente as 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, execute:
- sudo firewall-cmd --permanent --list-all
Você verá um resultado como esse:
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 alterações, você precisará recarregar o serviço de firewall:
- sudo firewall-cmd --reload
Agora, seu servidor Nginx está completamente instalado e pronto para ser acessado por visitantes externos.
Agora, você pode testar se o servidor Web Nginx está em funcionamento, acessando o endereço IP público do seu servidor ou nome de domínio pelo navegador Web.
Nota: caso esteja usando a DigitalOcean como seu provedor de hospedagem DNS, verifique nossos docs de produto para instruções detalhadas sobre como configurar um novo nome de domínio e apontá-lo para seu servidor.
Se você não tiver um nome de domínio apontando no seu servidor e você não sabe o endereço IP público do seu servidor, é possível encontrá-lo executando o seguinte comando:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Isso irá mostrar na tela alguns endereços IP. Você pode testar cada um deles em seu navegador Web.
Como uma alternativa, verifique qual endereço IP está acessível, como visto por outras locações na internet:
- curl -4 icanhazip.com
Digite o endereço que receber no seu navegador Web e ele irá levá-lo para a página inicial do Nginx:
Caso veja essa página, então seu servidor Web está agora corretamente instalado.
Agora que você tem seu servidor Web em funcionamento, vamos rever como gerenciar o serviço Nginx por meio do systemctl
.
Sempre que você precisa parar seu servidor Web, utilize:
- sudo systemctl stop nginx
Para iniciar o servidor quando ele for parado, digite:
- sudo systemctl start nginx
Para parar e então iniciar o serviço novamente, use:
- sudo systemctl restart nginx
O Nginx também pode recarregar as alterações de configuração sem interromper as conexões. Para fazer isso, digite:
- sudo systemctl reload nginx
Por padrão, o Nginx está configurado para iniciar automaticamente quando o servidor for iniciado. Se isso não é o que você deseja, é possível desativar este comportamento digitando:
- sudo systemctl disable nginx
Para reativar o serviço e fazer o Nginx iniciar novamente na inicialização, utilize:
- sudo systemctl enable nginx
Agora que sabe como gerenciar o serviço do Nginx, você deve gastar alguns minutos para familiarizar-se com alguns diretórios e arquivos importantes.
/usr/share/nginx/html
: O conteúdo Web em si, que por padrão apenas consiste na página Nginx padrão que você viu antes, é disponibilizado fora do diretório /usr/share/nginx/html
. Isso pode ser alterado mudando os arquivos de configuração do Nginx./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/conf.d/
: este diretório contém arquivos de configuração de bloco de servidor, onde é possível definir os sites que estão hospedados dentro do Nginx. Uma abordagem típica é ter cada site em um arquivo separado cujo nome provém do domínio do site, como o your_domain.conf
./var/log/nginx/access.log
: cada pedido ao seu servidor Web é registrado neste arquivo de registro a menos que o Nginx esteja configurado para fazer de outra maneira./var/log/nginx/error.log
: qualquer erro do Nginx será gravado neste registro.Caso você queira hospedar vários sites dentro do mesmo servidor Web Nginx, você precisará configurar os blocos de servidor. Os blocos do servidor do Nginx funcionam de maneira semelhante aos hosts virtuais do Apache, permitindo que um único servidor responda a vários nomes de domínios e atenda diferentes conteúdos para cada um deles. No CentOS 8, os blocos de servidor são definidos em arquivos .conf
localizados em /etc/nginx/conf.d
.
Vamos configurar um bloco de servidor para um domínio chamado your_domain. Para aprender mais sobre como configurar um nome de domínio com o DigitalOcean, veja nossa Introdução ao DNS do DigitalOcean.
Por padrão, o Nginx no CentOS 8 está configurado para disponibilizar documentos vindos de um diretório em /usr/share/nginx/html
. Enquanto isso funciona bem para um único site, isso se torna difícil de gerenciar se você estiver hospedando vários sites. Em vez de modificar o /usr/share/nginx/html
, vamos criar uma estrutura de diretórios dentro do /var/www
para o site your_domain, deixando o /usr/share/nginx/html
no lugar como o diretório padrão para ser disponibilizado se um pedido de cliente não corresponder a nenhum outro site.
Crie o diretório para o your_domain da seguinte forma, utilizando o sinalizador -p
para criar quaisquer diretórios pai necessários:
- sudo mkdir -p /var/www/your_domain/html
Em seguida, atribua a propriedade do diretório com a variável de ambiente $USER
, que deve fazer referência ao seu usuário de sistema atual:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Em seguida, vamos criar uma página de amostra index.html
para testar a configuração de bloco de servidor. O editor de texto padrão que vem com o CentOS 8 é o vi
. O vi
é um editor de texto extremamente poderoso, mas pode ser de difícil uso para usuários com pouca experiência com ele. Talvez queira instalar um editor mais amigável para o usuário, como o nano
, para facilitar a edição de arquivos de configuração no seu servidor CentOS 8:
- sudo dnf install nano
Agora, utilize o nano
para criar o arquivo de amostra index.html
:
- nano /var/www/your_domain/html/index.html
Dentro desse arquivo, adicione o seguinte código HTML:
<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 você terminar. Se você usou o nano
, você pode fazer isso pressionando CTRL + X
, Y
e, em seguida, ENTER
.
Para que o Nginx disponibilize esse conteúdo, precisamos criar um bloco de servidor com as diretrizes corretas que apontam para nossa raiz Web personalizada. Criaremos um novo bloco de servidor em /etc/nginx/conf.d/your_domain.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;
}
}
Salve e feche o arquivo quando terminar de editar o conteúdo.
Para garantir que não haja erros de sintaxe em qualquer um dos seus arquivos Nginx, execute:
- sudo nginx -t
Se não houver problemas, você verá o seguinte resultado:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Assim que seu teste de configuração passar, reinicie o Nginx para habilitar suas alterações:
- sudo systemctl restart nginx
Antes de poder testar as alterações do seu navegador, você precisará atualizar os contextos de segurança SELinux do seu servidor para que o Nginx possa disponibilizar o conteúdo do diretório /var/www/your_domain
.
O seguinte comando permitirá que sua raiz de documento personalizada seja disponibilizada como conteúdo HTTP:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Agora, você pode testar sua configuração de domínio personalizada, navegando para http://your_domain
, onde verá algo como isto:
Essa página está renderizando o código HTML que definimos na raiz de documento personalizada criada para o bloco de servidor. Se você é capaz de ver essa página, significa que seu servidor Nginx está configurado corretamente para atender seu domínio.
Neste guia, vimos como instalar e configurar o Nginx, um servidor Web de alto desempenho e também o proxy reverso. Revisamos a forma como gerenciar o serviço Nginx em execução em seu servidor e quais são os diretórios principais usados pelo Nginx para armazenar arquivos de configuração, conteúdo e registros.
A partir daqui, você tem muitas opções para o tipo de conteúdo e as tecnologias que você possa querer usar nos sites hospedados dentro do seu servidor Web.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!