Como configurar o NGinx em 3 passos

Nesse artigo vamos explicar como configurar o NGinx como servidor, no lugar do Apache.

[ Hits: 4.284 ]

Por: José Ferreira Netto em 22/03/2023


O que é o NGinx e como instalar



O NGinx consome menos memória que o Apache, pois lida com requisições Web do tipo "event-based web server" e o Apache é baseado no "process-based server", podendo trabalhar juntos.

Autor original: Igor Sysoev
Fonte: Wikipédia - https://pt.wikipedia.org/wiki/Nginx

Para instalar ele basta atualizar o sistema (Linux) e usar o comando correspondente abaixo:

Debian e derivados:

sudo apt install nginx

Fedora, RHEL e derivados:

sudo yum install nginx

Ajustes nas configurações

Abra o arquivo de configuração, que está em /etc/nginx.conf:

nano /etc/nginx.conf
ou
vim /etc/nginx.conf

E faça alguns ajustes, como:

Altere ou adicione a linha abaixo:

server_tokens off; #Esse comando evita que a versão do NGinx seja exibida no navegador.

Faça os ajustes necessários para seu servidor.

Configurando o NGinx para seus sites

Existem 3 formas de você criar um bloco (como no Apache) para cada site seu:

1. Criar blocos no arquivo /etc/nginx/nginx.conf para cada site/blog.

Exemplo do meu site:

server {
        listen 80;
        listen [::]:80;

        root /var/www/html/diretorio-do-site;

        access_log /var/log/nginx/access.log main;
        error_log /var/log/nginx/error.log;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name dominio.seu.site www.dominio.seu.site;
        location / {
                # Se for usar um site estático - ative essa linha abaixo
                # try_files $uri $uri/ =404;
                # Se for usar WordPress - ative essa linha abaixo
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }
        location ~ .php$ {
                include snippets/fastcgi-php.conf;
               # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.4-jarusrv-fpm.sock;

        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
                fastcgi_read_timeout 300;
        }
        # Se for usar o PHPMyAdmin
        location /phpmyadmin {
                root /usr/share;
                index index.php;
        }
}

2. Criar blocos no arquivo default para cada site/blog.

O arquivo default fica no diretório /etc/nginx/sites-enabled e cada bloco é criado por server { ... } e se um bloco estiver definido como server_default os demais serão ignorados...

Basicamente cada bloco do arquivo default (ou no próprio arquivo nginx.conf) é assim:

server {
           listen 80 default_server;
           server_name _; #Dominio do seu site (ex: meudominio.com www.meudominio.com)
           root /var/www/html/diretorio-do-seu-site/;
}

Se você tiver apenas um site, use _ no lugar do domínio.

3. Apagar o arquivo default - que está em /etc/nginx/sites-enabled/ e criar um para cada site.

Da mesma forma que as demais, basta criar um arquivo com o nome do site e incluir cada bloco server { ... } com as configurações necessárias.

No final do artigo vou deixar um exemplo de um site que está funcionando, para você usar como referência.

Convencionalmente é bom criar o arquivo para cada site para evitar que um erro tire todos fora "do ar", embora o NGinx leia todos os arquivos e caso algum apresente erro, ele não iniciará, portanto, à cada ajuste, verifique se está ok.

Para checar os arquivos de configuração, use:

sudo nginx -t

Para verificar o status do serviço, use:

systemctl status nginx
ou
service nginx status

Para reiniciar o nginx, use:

systemctl restart nginx
ou
service nginx restart

Exemplo de configuração para um site com WordPress

Esse é um código de um site que eu mantenho para testes e que pode ser acessado normalmente no endereço http://jaru.srv.br.

# Servidor Jaru.srv.br
#
server {
        listen 80;
        listen [::]:80;

        root /var/www/html/jarusrv;

        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;

        server_name jaru.srv.br www.jaru.srv.br;
        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                # try_files $uri $uri/ =404;
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        # pass PHP scripts to FastCGI server
        #
        location ~ .php$ {
                include snippets/fastcgi-php.conf;
        #
        #       # With php-fpm (or other unix sockets):
                fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;

        #       # With php-cgi (or other tcp sockets):
        #       fastcgi_pass 127.0.0.1:9000;
                fastcgi_read_timeout 300;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #       deny all;
        #}
}

Obs.: esse foi meu primeiro artigo publicado aqui e espero que seja útil e agradeço os feedbacks - desde que educadamente - aceito sugestões e responderei a todas as perguntas e dúvidas.

   

Páginas do artigo
   1. O que é o NGinx e como instalar
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Problemas encontrados na adoção do IPv6

GNU/Linux no mundo corporativo

VLAN Tagging nos sistemas GNU/Linux derivados do Red Hat

Packet Tracer 7 no Debian 10

Instalando DNS Server (BIND) no CentOS 7

  
Comentários
[1] Comentário enviado por maurixnovatrento em 25/03/2023 - 16:29h


Bom artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts