Gerado a partir da necessidade de desenvolver uma solução capaz de suportar a crescente demanda de solicitações na Internet, o
Nginx foi criado em 2002, por um engenheiro de softwares chamado
Igor Sysoev. Ele foi lançado em 2004 oficialmente como um servidor WEB e desde 2018, já possui mais de 20% do tráfego total da Internet, superando a Microsoft e o Google, considerando apenas os sites realmente ativos.
O que é o Nginx
A forma de ler seu nome é "engine-x", sendo que ele é um servidor WEB (HTTP e IMAP/POP3/Proxy). Parece o conhecido
Apache, só que muito mais rápido! O Nginx consome bem menos memória que o Apache, pois lida com requisições WEB do tipo "event-based web server", enquanto que o Apache é baseado no "process-based server", podendo ambos trabalharem juntos.
É possível diminuir o consumo de memória do Apache, passando as requisições WEB primeiro pelo Nginx, assim, o Apache não precisa servir arquivos estáticos e pode utilizar o bom controle de cache feito pelo Nginx.
Algumas características básicas do Nginx que gostaria de destacar:
- Manipulação de arquivos estáticos, além da auto-indexação de arquivos;
- Cache de descritor de arquivos abertos;
- Proxy reverso acelerado com cache, com balanceamento de carga simples e tolerância a falhas;
- Suporte acelerado com cache das seguintes tecnologias: FastCGI, uWSGI, SCGI e servidores memcached;
- Arquitetura modular;
- Filtros que incluem gzipping, intervalos de bytes, respostas fragmentadas, XSLT, SSI e transformação da imagem de filtro;
- Inclusões múltiplas SSI dentro de uma página única que podem ser processadas em paralelo se forem manuseadas pelos servidores de proxy, ou do FastCGI;
- SSL e TLS com apoio ao SNI;
- Módulo de reescrita com mudança URI usando expressões regulares;
- Controle de acesso baseado no endereço IP do cliente, além de autenticação HTTP Basic;
- Métodos POST, GET, PUT, DELETE, MKCOL, COPY e MOVE;
- Streaming de FLV e MP4;
- Limitação de taxa de resposta.
Como instalar o Nginx
O Nginx está disponível nos repositórios oficiais do
Ubuntu, sendo então necessário você atualizar sua lista de pacotes e depois realizar a instalação:
sudo apt update
sudo apt install -y nginx
Após a instalação, o Ubuntu inicia automaticamente seu servidor WEB com o Nginx.
Para verificar se o Nginx foi instalado e está em funcionamento, utilize o seguinte comando:
sudo systemctl status nginx
No retorno desse comando, você deve receber:
Active: active (running) since ...
Liberar o Nginx no Firewall
Caso você tenha um Firewall em funcionamento no seu servidor ou na sua estação de trabalho, recomendo que libere as portas HTTP (80) e HTTPS (443) no seu Firewall com o UFW. Essa liberação é bem simples com o seguinte comando:
sudo ufw allow 'Nginx Full'
Para verificar, utilize:
sudo ufw status
Após esse comando, você pode observar que as portas 80 e 443 estão abertas na sua máquina.
Iremos agora testar o funcionamento do servidor WEB Nginx. Para isso, precisamos do endereço IP da máquina, que pode ser obtido com o comando:
ip addr
Veja que o meu IP é o 192.168.0.74.
Posso abrir meu navegador WEB e digitar esse IP, sendo que recebo uma página inicial padrão do Nginx.
Como instalar o PHP no Nginx
Nesse momento, você possui o servidor WEB instalado, mas não possui nenhum software instalado que possa gerar o conteúdo dinâmico, como o
PHP.
Como o Nginx não possui o processamento nativo do PHP, você precisará instalar o "php-fpm", que significa "Gerenciador de Processos FastCGI". Diremos então ao Nginx para passar os pedidos PHP para este software de processamento.
A instalação é simples, utilizando o
apt:
sudo apt install -y php-fpm
Agora, será preciso realizar algumas configurações no Nginx para que ele trabalhe com o "php-fpm", ou seja, para ele utilizar o processador de conteúdo dinâmico. Para fazer isso, você irá alterar o conteúdo dos arquivos que estão no diretório
/etc/nginx/sites-available/.
Eu possuo apenas o site padrão no meu servidor WEB, então, ao realizar um
ls, recebo apenas o arquivo default:
ls /etc/nginx/sites-available/
Irei então editar este arquivo com o comando:
sudo nano /etc/nginx/sites-available/default
Altere e adicione o seguinte conteúdo no seu arquivo de configuração:
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Agora salve o arquivo com
Ctrl+o e feche ele com
Ctrl+x.
Verifique se o arquivo de configuração está escrito da forma correta, com o comando:
sudo nginx -t
Finalmente, recarregue seu Nginx da seguinte forma:
sudo systemctl reload nginx
Iremos agora criar um arquivo PHP para testar a sua configuração. O arquivo irá chamar "informacoes.php" e estará na pasta
/var/www/html/:
sudo nano /var/www/html/informacoes.php
O conteúdo do arquivo será:
phpinfo();
?>
Agora salve o arquivo com
Ctrl+o e feche ele com
Ctrl+x.
Acesse esse arquivo no seu navegador WEB, utilizando o endereço:
http://IP_DO_SERVIDOR/informacoes.php
Você receberá uma página com as informações do PHP instalado:
Conclusão
Pronto! Seu Nginx está instalado e configurado com o PHP no seu servidor, ou na sua estação de trabalho.
Caso queira maiores informações, seguem os sites dessas duas tecnologias: