Como configurar hosts virtuais no Nginx no Ubuntu
A configuração de anfitriões virtuais no Nginx permite-lhe alojar vários sítios Web num único servidor, tendo cada sítio Web o seu próprio nome de domínio. Os hosts virtuais do Nginx são configurados usando “blocos de servidor” que definem as configurações para cada site. Este guia irá orientá-lo na configuração de hosts virtuais num servidor Ubuntu com Nginx.
1. Pré-requisitos
- Nginx instalado: Certifique-se de que o Nginx esteja instalado no seu servidor. Se não estiver, instale-o com:
sudo apt update
sudo apt install nginx
- Nomes de domínio: Tenha os nomes de domínio que deseja hospedar apontados para o endereço IP do seu servidor. Pode modificar o seu ficheiro /etc/hosts para efeitos de teste.
2. Configurar diretórios para cada site
Cada site deve ter o seu próprio diretório para armazenar os ficheiros do site. Vamos criar diretórios para dois sites de exemplo, exemplo1.com e exemplo2.com.
sudo mkdir -p /var/www/example1.com/html
sudo mkdir -p /var/www/example2.com/html
Conceda a propriedade destes diretórios ao utilizador Nginx (www-data) para garantir que o Nginx tem as permissões necessárias.
sudo chown -R www-data:www-data /var/www/example1.com/html
sudo chown -R www-data:www-data /var/www/example2.com/html
Defina as permissões apropriadas:
sudo chmod -R 755 /var/www
3. Criar conteúdo de amostra
Para testar os anfitriões virtuais, adicione ficheiros HTML de amostra para cada site.
Exemplo1.com:
echo "<h1>Welcome to Example1.com!</h1>" | sudo tee /var/www/example1.com/html/index.html
Example2.com:
echo "<h1>Welcome to Example2.com!</h1>" | sudo tee /var/www/example2.com/html/index.html
4. Criar ficheiros de configuração do anfitrião virtual
Agora, vamos criar um arquivo de configuração de bloco de servidor (host virtual) para cada site. O Nginx armazena esses arquivos de configuração no diretório /etc/nginx/sites-available/.
Etapa 1: Criar configuração para Example1.com
Crie um novo arquivo de configuração para example1.com:
sudo nano /etc/nginx/sites-available/example1.com
Adicione a seguinte configuração:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Etapa 2: criar configuração para Example2.com
Crie um ficheiro de configuração para example2.com:
sudo nano /etc/nginx/sites-available/example2.com
Adicione a seguinte configuração:
server {
listen 80;
server_name example2.com www.example2.com;
root /var/www/example2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5. Ativar os Hosts Virtuais
O Nginx usa links simbólicos para habilitar hosts virtuais. Vincule os arquivos de configuração de sites-available para sites-enabled:
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
6. Testar a configuração
Para garantir que não existem erros de sintaxe na sua configuração, execute:
sudo nginx -t
Se tudo estiver correto, você verá uma mensagem de confirmação. Se existirem erros, o Nginx apresentará detalhes para o ajudar a resolver o problema.
7. Reiniciar o Nginx
Depois de confirmar a configuração, reinicie o Nginx para aplicar as alterações:
sudo systemctl restart nginx
8. Aceder aos sítios Web
Se os nomes de domínio estiverem apontados para o seu servidor, deve agora poder aceder a cada site visitando:
- http://example1.com
- http://example2.com
Para testes locais, pode editar o seu ficheiro /etc/hosts para mapear os nomes de domínio para o endereço IP do seu servidor. Adicione entradas como:
127.0.0.1 example1.com 127.0.0.1 example2.com
Guarde e feche o ficheiro e, em seguida, tente aceder aos sites no seu browser.
9. Ativação de HTTPS para cada site (opcional)
Para conexões seguras, é possível configurar certificados SSL usando o Let’s Encrypt. Para ativar o HTTPS:
Instale o certbot:
sudo apt install certbot python3-certbot-nginx
Execute o seguinte comando para obter e configurar certificados SSL para cada domínio:
sudo certbot --nginx -d example1.com -d www.example1.com
sudo certbot --nginx -d example2.com -d www.example2.com
Siga as instruções e o Certbot definirá automaticamente o HTTPS na sua configuração do Nginx.
Conclusão
Ao configurar hosts virtuais no Nginx no Ubuntu, você pode hospedar vários sites em um único servidor, cada um com sua própria configuração e conteúdo. Essa configuração é eficiente e escalável, tornando o Nginx uma excelente escolha para hospedar vários sites no mesmo servidor.