Servidor web - NGINX - BÁSICO
Este tutorial destaca pré-requisitos para sua utilização, requisitos de sistema, pacotes necessários, daemons e a configuração do firewall no linux. Além disso, aborda o caminho do arquivo de configuração, diretrizes para instalação e configuração do servidor Nginx, bem como os comandos para testar a sintaxe e operar o servidor. Finaliza com dicas práticas para o acesso pelo cliente e comandos úteis
Um servidor web é um computador responsável pelo armazenamento, processamento e entrega dos arquivos dos sites para os navegadores. Através deste processo, os servidores web carregam e entregam a página solicitada para o navegador do usuário — como o Google Chrome, por exemplo.
O NGINX é um servidor web de código aberto, além de ser uma solução de entrega de aplicativos e usado como proxy. Foi desenvolvido por Igor Sysoev, em outubro de 2004 para solucionar o problema C10k.
1 - PRÉ-REQUISITOS BÁSICOS PARA USO DO NGINX
Pré-Requisitos:
- Pode variar dependendo do uso.
- 512 MB de RAM
- 50 MB de espaço livre em disco.
- CPU- 1Ghz
Sistemas operacionais compatíveis:
- O Nginx está disponível para uma variedade de sistemas operacionais, incluindo Windows, macOS e Linux.
Esses aqui são necessários mas provavelmente já estão instalados:
fonts-liberation2 fonts-opensymbol gir1.2-goa-1.0;
gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gir1.2-gudev-1.0;
gir1.2-snapd-1 gir1.2-udisks-2.0 grilo-plugins-0.3-base gstreamer1.0-gtk3;
libboost-date-time1.65.1 libboost-filesystem1.65.1 libboost-iostreams1.65.1;
libboost-locale1.65.1 libcdr-0.1-1 libclucene-contribs1v5 libclucene-core1v5;
libcmis-0.5-5v5 libcolamd2 libdazzle-1.0-0 libe-book-0.1-1;
libedataserverui-1.2-2 libeot0 libepubgen-0.1-1 libetonyek-0.1-1;
libevent-2.1-6 libexiv2-14 libfreerdp-client2-2 libfreerdp2-2 libgc1c2;
libgee-0.8-2 libgexiv2-2 libgom-1.0-0 libgpgmepp6 libgpod-common libgpod4
liblangtag-common liblangtag1 liblirc-client0 liblua5.3-0 libmediaart-2.0-0
libmspub-0.1-1 libodfgen-0.1-1 libqqwing2v5 libraw16 librevenge-0.0-0
libsgutils2-2 libssh-4 libsuitesparseconfig5 libvncclient1 libwinpr2-2
libxapian30 libxmlsec1 libxmlsec1-nss lp-solve media-player-info
python3-mako python3-markupsafe syslinux syslinux-common syslinux-legacy
usb-creator-common
Daemons:
O NGINX possui dois principais processos, master process e worker process.
Visualizando os processos:
$ ps aux | grep nginx
Normalmente é necessário configurar seu firewall para permitir o tráfego de rede, isso tanto no servidor quanto no clientes.Você precisará abrir as portas usadas pelo NGINX, usando o seguinte comando:
$sudo ufw enable
$sudo ufw allow http
$sudo ufw reload
2 - ARQUIVO DE CONFIGURAÇÃO DO NGINX
Diretório de Configuração: está localizado em /etc/nginx/. O arquivo principal de configuração é chamado nginx.conf. O arquivo de configuração pode ser acessado por cd /etc/nginx/nginx.conf.
É possível usar etc/nginx/sites-available/ para criar arquivos de configuração separados para cada site que deseja hospedar.
Para habilitar um site, no caso é necessário ligar os arquivos criados no etc/nginx/sites-available/ ao diretório /etc/nginx/sites-enabled/.
3 - PASSO A PASSO DE FUNCIONAMENTO DO NGINX (Neste tutorial foi usado as versões 20.04 e 16.04 do linux Ubuntu)
3.1 INSTALAÇÃO DO SERVIÇO:
- Para instalar o Nginx utilize o seguinte comando:
$sudo apt install nginx
4. CONFIGURAÇÃO DO SERVIÇO
4.1 Desativar o arquivo de configuração padrão do NGINX
$sudo unlink /etc/nginx/sites-enabled/default
4.2 - Crie um arquivo de configuração para o seu site usando um editor de texto. Por exemplo:
$sudo nano /etc/nginx/sites-available/exemplo.conf
4.2.1 - Copie e cole o seguinte código dentro do editor do arquivo:
server {
listen 80;
server_name exemplo.com;
root /var/www/exemplo/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
4.3 Criar o link simbólico para ativar o site:
$ln -s /etc/nginx/sites-available/exemplo.conf /etc/nginx/sites-enabled/
4.4 Verificar a sintaxe dos arquivos de configuração:
$nginx -t
4.5. EDITE O ARQUIVO /etc/hosts E COLOQUE O IP DO SEU SERVIDOR ou configure o dns :
5. CONFIGURAÇÃO DO SITE ( index.html e outros subdiretórios)
Após seguir estes passos, o Nginx estará configurado para servir arquivos HTML e subdiretórios. Basta organizar os arquivos HTML nos subdiretórios dentro do diretório raiz. Certifique-se de substituir "exemplo.com" pelo nome do seu domínio e "/var/www/exemplo/html" pelo caminho dos arquivos do site. Use sudo chmod 755 /var/www/ para ajustar as permissões, se necessário.
Por exemplo, se você deseja servir arquivos HTML de subdiretórios dentro do diretório /var/www/exemplo/html, você pode organizar seus arquivos desta forma:
/var/www/exemplo/html/
├── index.html
├── subdiretorio1/
│ └── arquivo1.html
├── subdiretorio2/
│ └── arquivo2.html
Nesse caso, o Nginx servirá automaticamente os arquivos arquivo1.html e arquivo2.html quando acessados através das URLs apropriadas, como:
http://exemplo.com/subdiretorio1/arquivo1.html
http://exemplo.com/subdiretorio2/arquivo2.html
6 - INICIAR/REINICIAR SERVIÇO APÓS CONFIGURAÇÕES:
Comandos para Iniciar Serviço
$ sudo systemctl start nginx
$sudo service nginx start
$sudo /etc/init.d/nginx start
Comandos para Reiniciar:
$sudo systemctl restart nginx
$sudo /etc/init.d/nginx restart
$sudo service nginx restart
7 - VERIFICAÇÃO DO FUNCIONAMENTO
Reinicie o serviço e após para verificar o funcionamento, basta abrir um navegador e acessar o seu site usando o nome de domínio configurado no arquivo de hosts, ou dns ou diretamente pelo ip do servidor (passo 4.5).
8 - PRÁTICA DE ACESSO PELO CLIENTE
Basta abrir o navegador, digitar o ip do servidor ou o nome de acordo com o DNS, ou o configurado no arquivo /etc/hosts do computador cliente.
9. COMANDOS ÚTEIS NGINX
Existem 3 comandos para recarregar o serviço do Nginx, conforme observado a seguir:
$systemctl reload nginx
$sudo nginx -s reload
$sudo service nginx reload
Existem 2 comandos para verificar o status do Nginx, conforme observado a seguir:
$systemctl status nginx
$sudo service status nginx
Comando para mostrar ajuda dos comandos do Nginx:
$systemctl -h nginx
Comando para busca de erros de sintaxe:
$sudo nginx -t
Existem 3 comandos para parar o serviço, conforme observado a seguir:
$sudo service nginx stop
$sudo systemctl stop nginx
$sudo /etc/init.d/nginx stop
10 - CONCLUSÃO
O Nginx oferece um servidor web eficiente e versátil. Sua configuração flexível, combinada com comandos simples para instalação, inicialização e verificação de erros, torna-o uma escolha robusta para hospedagem web, permitindo ajustes refinados e manutenção ágil de servidores.
EXTRA (Maneira simplificada para testes)----
1 . PASSO A PASSO DE FUNCIONAMENTO DO NGINX
1.1 Instalação do Nginx:
$ sudo apt update
$ sudo apt install nginx
2. Entre no diretório /var/www/html: (o arquivo index do nginx fica nesse diretório).
$ cd /var/www/html
3. procure pelo arquivo index.nginx-debian.html e logo em seguida faça uma cópia, para fim de segurança.
$ sudo cp index.nginx-debian.html index.nginx-debian.html.origin
4. Depois edite o arquivo index.nginx-debian.html como desejado;
$ sudo nano index.nginx-debian.html
5. Reiniciar o Nginx:
Após editar o arquivo, é uma boa prática reiniciar o Nginx para aplicar as alterações.
$sudo systemctl restart nginx
$sudo /etc/init.d/nginx restart
$sudo service nginx restart
6. Teste acessando pelo IP do Servidor
Abra um navegador web e insira o endereço IP do seu servidor na barra de endereços. Se estiver acessando o servidor na mesma rede, pode ser algo como http://seu_endereco_ip. Você deve ver a página modificada conforme as edições feitas no passo 4.
11 - REFERÊNCIAS
https://ubuntu.com/tutorials/install-and-configure-nginx#2-installing-nginx
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04-pt#passo-5-configurando-blocos-do-servidor-recomendado
https://www.linode.com/docs/guides/how-to-install-and-use-nginx-on-ubuntu-20-04/
https://youtu.be/WEIo9f4QbYM
https://www.youtube.com/watch?app=desktop&v=HYNq-HyntZQ
https://serverspace.io/support/help/nginx-virtual-hosts-on-ubuntu-20-04/amp/
https://www.seguro.targethost.com.br/knowledgebase/137/Como-criar-Virtual-Hosts-com-Nginx.html
https://king.host/wiki/artigo/como-editar-o-arquivo-hosts-no-windows/#:~:text=Ele%20est%C3%A1%20no%20caminho%3A%20C,estiver%20procurando%20o%20arquivo%20hosts.
https://www.tecmint.com/useful-nginx-command-examples/
https://www.nginx.com/resources/wiki/start/topics/examples/server_blocks/
https://access.redhat.com/documentation/pt-br/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/configuring-nginx-as-a-web-server-that-provides-different-content-for-different-domains_setting-up-and-configuring-nginx
https://kinsta.com/pt/base-de-conhecimento/como-instalar-o-nginx/
nginx.org/en/docs
https://phoenixnap.com/kb/nginx-start-stop-restart
https://www.nginx.com/resources/glossary/nginx/
https://www.hostinger.com.br/tutoriais/o-que-e-nginx#:~:text=NGINX%2C%20pronunciado%20%E2%80%9Cengine%2Dex,lan%C3%A7ado%20em%20Outubro%20de%202004
https://youtu.be/YXLI5Rbu_Ek
https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#:~:text=NGINX%20has%20one%20master%20process,as%20maintain%20the%20worker%20processes.