Configurando Virtual Host no Nginx
Published: 2020-01-12 22:07:59

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.

## 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.

```bash
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.

```bash
service nginx status
```

Iniciar, parar ou reiniciar o serviço.

```bash
service nginx start / stop / restart
```

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

```bash
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:

```bash
touch example.com
```

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

```nginx
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 $document_root$fastcgi_script_name;
   	}

	# 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:

```bash
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:

```bash
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!