Problema: Hospedar Múltiplos Domínios em Um Único IP
Hospedar vários sites com nomes de domínio diferentes em um único endereço IP de servidor pode ser complexo. O Nginx, um servidor web popular, oferece uma solução para esse problema, mas requer a configuração adequada para lidar com múltiplos domínios.
Solução: Configuração Correta do Nginx para Múltiplos Domínios
Configurando Blocos de Servidor
Os blocos de servidor no Nginx ajudam a hospedar múltiplos domínios em um servidor. Eles permitem definir configurações diferentes para cada domínio, incluindo diretórios raiz e registros.
Para criar blocos de servidor para cada domínio, defina-os no arquivo de configuração do Nginx. Cada bloco de servidor começa com a diretiva server
e contém configurações para aquele domínio.
Dica: Organize Sua Configuração
Mantenha sua configuração do Nginx organizada criando arquivos separados para cada domínio no diretório /etc/nginx/sites-available/. Em seguida, crie links simbólicos para esses arquivos no diretório /etc/nginx/sites-enabled/ para ativá-los.
Configurando a Diretiva Listen
A diretiva 'listen' no Nginx informa ao servidor qual endereço IP e porta usar para conexões recebidas. Ao configurar múltiplos domínios, use a diretiva 'listen' corretamente.
A forma adequada de usar a diretiva 'listen' é especificar apenas o número da porta, geralmente 80 para HTTP ou 443 para HTTPS. Por exemplo:
listen 80;
Não inclua o domínio na diretiva 'listen'. Isso é incorreto e pode causar problemas.
Usando a Diretiva Server_Name
A diretiva 'server_name' é importante para o roteamento de domínios no Nginx. Ela informa ao Nginx quais nomes de domínio associar a um bloco de servidor.
Para configurar o 'server_name' para cada domínio, inclua-o no bloco do servidor. Por exemplo:
server_name www.dominio1.exemplo dominio1.exemplo;
Você pode adicionar vários nomes de domínio, com e sem o prefixo 'www', para cobrir todas as versões do seu nome de domínio.
Exemplo: Subdomínios Curinga
Se você quiser corresponder a todos os subdomínios de um domínio, pode usar um curinga na diretiva server_name:
server_name *.dominio1.exemplo;
Isso corresponderá a qualquer subdomínio de dominio1.exemplo.
Guia Passo a Passo para Configurar o Nginx para Múltiplos Domínios
Editando o Arquivo de Configuração do Nginx
Para configurar múltiplos domínios no Nginx, localize e abra o arquivo principal de configuração do Nginx. Na maioria dos sistemas, este arquivo está em /etc/nginx/nginx.conf
. É melhor criar arquivos de configuração separados para cada domínio no diretório /etc/nginx/sites-available/
.
Para criar blocos de servidor separados para cada domínio:
-
Abra um novo arquivo no diretório sites-available:
sudo nano /etc/nginx/sites-available/dominio1.conf
-
Adicione um bloco de servidor para seu primeiro domínio:
server { listen 80; server_name dominio1.com www.dominio1.com; # Outras diretivas... }
-
Repita esse processo para seu segundo domínio em um novo arquivo:
sudo nano /etc/nginx/sites-available/dominio2.conf
-
Adicione o bloco de servidor para o segundo domínio:
server { listen 80; server_name dominio2.com www.dominio2.com; # Outras diretivas... }
Dica: Links Simbólicos para Arquivos de Configuração
Após criar arquivos de configuração no diretório sites-available, crie links simbólicos para habilitá-los:
sudo ln -s /etc/nginx/sites-available/dominio1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/dominio2.conf /etc/nginx/sites-enabled/
Este método permite habilitar ou desabilitar sites facilmente criando ou removendo links simbólicos.
Configurando Diretórios Raiz
Diretórios raiz separados para cada domínio mantêm os arquivos de diferentes sites separados, facilitando o gerenciamento e a segurança.
Para especificar diretórios raiz na configuração:
-
Crie diretórios para cada domínio:
sudo mkdir -p /var/www/dominio1.com sudo mkdir -p /var/www/dominio2.com
-
Em cada bloco de servidor do domínio, adicione a diretiva root:
server { listen 80; server_name dominio1.com www.dominio1.com; root /var/www/dominio1.com; # Outras diretivas... }
Configurando o Processamento PHP (se aplicável)
Se seus sites usam PHP, configure o FastCGI para processamento PHP:
-
Em cada bloco de servidor, adicione um bloco de localização para PHP:
server { # Outras diretivas... location ~ \.php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
-
Certifique-se de que os parâmetros FastCGI estejam corretos para cada domínio. As diretivas
fastcgi_param
devem apontar para o diretório raiz correto:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Após fazer essas alterações, teste sua configuração do Nginx e reinicie o serviço Nginx para aplicar as mudanças.