Vhost é a capacidade de ter diversos sites ou sistemas no mesmo servidor de forma isolada. Assim é possível ter vários domínios ou subdomínios no mesmo servidor.
O presente howto tem como objetivo explicar os procedimentos de configurar Vhost do Nginx no Debian, mas também funciona em distros derivadas do Debian, como o Ubuntu por exemplo.
Configuração do VhostPrimeiramente é preciso instalar o Nginx no Debian/Ubuntu, o qual pode ser instalado via APT.
# apt update
# apt install nginx php7.2 php7.2-fpm php7.2-mysql php7.2-gd php7.2-mysql mysql-server
Então segue os procedimentos para configuração do Vhost no Nginx abaixo:
O Nginx tem um arquivo de configuração de Vhost de exemplo, então pode fazer uma cópia deste arquivo para cada Vhost que for criar, depois alterar o server_name, root e Directory para o Vhost correspondente.
# cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bkp
O nome app.local coloca o nome que quiser, geralmente é comum colocar o nome do domínio/subdomínio do Vhost correspondente.
# vim /etc/nginx/sites-available/app.local
Altere o arquivo para ficar como este, apenas altere o diretório de localização do seu site ou sistema.
server {
# Porta WEB
listen 80 default_server;
listen [::]:80 default_server;
# Nome do servidor
server_name app.local;
# 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 /var/www/html/app/public;
# 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.2-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;
}
}
Nota: A configuração do Vhost acima é de uma aplicação web, que funciona na rede interna, para rede externa, só alterar o ServerName para o nome de domínio válido no registro.br. Explicação das configurações essenciais para o funcionamento do Vhost no Nginx
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.2, caso esteja usando outra versão do PHP deve ser alterado a opção fastcgi_pass unix:/run/php/php7.2-fpm.sock; alterando o PHP7.2 para a versão instalada no seu servidor.
Testes de configuração
# 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 foi ok conforme acima, então podemos habilitar o Vhost
Habilitar o Vhost app.conf
# ln -s /etc/nginx/sites-available/app.local /etc/nginx/sites-enabled/app.local
Reinciar o Nginx
# service nginx restart
Como neste caso o Vhost é na rede interna, então para simular o domínio é necessário adicionar no arquivo /etc/hosts o IP do servidor seguido do nome ServerName definido no arquivo Vhost.
Para que uma máquina com Windows possa acessar a aplicação com o Vhost, o arquivo hosts é C:\Windows\System32\drivers\etc\hosts
Abrir com Bloco de Notas como Administrador o arquivo hosts no caminho mencionado.
IPSERVIDOR app.local
Abre o browser e acesse http://app.local
Para criar outro Vhost, copie o arquivo do Vhost criado anteriormente e troque o server_name, root e Directory para o Vhost corresponde, habilita o novo Vhost, reiniciar o Nginx e adicione no arquivo hosts.
Feito!
Muito bom!
ResponderExcluir