Configurando Virtual Host no Nginx

Aprenda a instalação e a configuração básica de como criar um server block com o servidor web Nginx

Configurando Virtual Host no Nginx

Fala pessoal tudo beleza?

Hoje vou mostrar como é fácil instalar e configurar o Nginx que é um servidor web, proxy reverso, proxy balanceador de carga e tem um desempenho muito bom.

Existem muitas configurações que podemos fazer para melhorar nosso servidor em termos de desempenho e segurança, quero mostrar aqui algumas delas. Irei dividir esse artigo em algumas partes para não ficar muito extenso. Aqui irei começar com a instalação e configuração básica.

Após a leitura desse artigo, acesse meu outro artigo Instalando Let's Encrypt no Ubuntu e Debian com Nginx e complemente a configuração do seu servidor web com certificado SSL gratuito

Instalação

Estou utilizando a distribuição GNU/Linux Debian 9 para esse exemplo. Nada impede que use uma diferente, apenas adapte o comando para o seu sistema.

apt update && apt install -y nginx

Após finalizar a instalação você já pode conferir se seu servidor local esta rodando corretamente. Entre com o endereço http://localhost e veja se a página de boas vindas do Nginx apareceu.

Comandos básicos

Para saber sobre o status, para reiniciar o serviço e checar se as configurações alteradas foram bem sucedidas utilizamos os comandos abaixo:

Verificar o status do serviço Nginx.

service nginx status

Iniciar, parar ou reiniciar o serviço.

service nginx start / stop / restart

Checar se alterações feitas estão corretas.

nginx -t

Configurando Nginx

Os arquivos de configuração ficam em /etc/nginx por padrão. No diretório sites-available ficam os arquivos de configuração dos sites e no diretório sites-enabled ficam os sites que estão ativos no servidor, que na verdade é um link simbólico para o diretório sites-available.

No diretório sites-available temos um arquivo chamado default que é o arquivo padrão do Nginx. Essa é a configuração usada quando acessamos a página de boas vindas após a instalação.

Vamos criar uma configuração nova, para isso entre no diretório /etc/nginx/sites-available e crie um arquivo vazio para o nosso site:

touch example.com

Abra o arquivo com seu editor e cole todo o conteúdo abaixo nele.

server {
    # Porta WEB
    listen 80 default_server;
    listen [::]:80 default_server;

    # Nome do servidor
    server_name example.com www.example.com;     

    # Diretorio de Log
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    rewrite_log on;

    # Diretorio dos arquivos web
    root /usr/share/nginx/html/example.com;

    # Extensões de arquivos que serão lidos
    index index.php index.html;

    client_max_body_size 128M;

    # URL amigáveis
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Configurações PHP FPM.
    location ~* \.php$ {
        fastcgi_pass unix:/run/php/php7.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        include /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
    }

    # Bloqueia arquivo com .ht (Nginx não utiliza o .htaccess como o Apache)
    location ~ /\.ht {
        deny all;
    }

    # Configura cache das extensões abaixo para expirar em 365 dias
    location ~* \.(?:ico|css|js|jpe?g|JPG|png|svg|woff)$ {
        expires 365d;
    }
}

No arquivo acima definimos algumas configurações essenciais para o funcionamento do um site. Vou ressaltar as principais.

  1. Na linha listen devemos colocar a porta que o Nginx escutará que é a porta padrão 80. A opção default_server deverá ser usada em somente uma configuração, pois essa será a principal do servidor.
  2. Na linha server_name deverá ser inserido o nome do seu domínio.
  3. Na directiva root deverá ser o caminho da sua aplicação, dos seus arquivos em PHP por exemplo.
  4. No bloco de configurações do PHP é usado o PHP 7.1, caso esteja usando outra versão do PHP deve ser alterado a opção fastcgi_pass unix:/run/php/php7.1-fpm.sock; alterando o php7.1 para a versão instalada no seu servidor.

Testando nossa configuração

Precisamos testar nossa configuração após essas alterações, para isso execute o comando abaixo:

nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se o retorno for igual a resposta acima quer dizer que deu tudo certo. Agora devemos ativar esse site para termos acesso a ele no navegador e reiniciar o serviço Nginx. Entre no diretório /etc/nginx/sites-enabled e digite o comando:

ln -s /etc/nginx/sites-available/example.com
service nginx restart

Pronto, agora seu site deve estar no ar.

Nesse artigo falei sobre uma configuração mais básica do Nginx. Irei fazer uma segunda parte onde irei dar algumas dicas para melhorar o desempenho ativando o cache do Nginx e como configurar para utilizar um certificado SSL grátis.

Até a próxima!