Posted on: September 29, 2024 03:11 PM
Posted by: Renato
Categories: Dicas
Views: 217
Servidor web
As pessoas não percebem, mas isso já está configurado por padrão no seu servidor web.
Quando você acessa um domínio que foi apontado pro seu servidor, mas seu servidor não tem nenhum virtual host
configurado pra receber esse domínio, ele entrega o conteúdo do diretório padrão do servidor web. Na maioria dos casos em /var/www/html
.
Tudo que você tem que fazer é configurar sua aplicação dentro do diretório padrão do servidor web e programa-lá para entregar um conteúdo especifico com base no domínio acessado. Seja ela feita em PHP, NodeJS, Python ou o que for. Todas elas tem recursos pra ler o domínio solicitado.
No PHP, por exemplo, você consegue saber qual domínio foi usado para chegar na sua aplicação por meio da variável global $_SERVER['HTTP_HOST']
.
Mas, existe um porém aí. As entradas DNS ainda precisam responderem pelo subdomínio.
Entradas DNS
Para que isso de fato funcione sem que você tenha que ficar criando entradas DNS no seu domínio pra cada usuário, você tem que configurar seu domínio pra responder com um wildcard
.
Invés de criar uma entrada DNS por usuário, você cria uma única entrada que vai responder por qualquer coisa. Veja abaixo.
O normal seria (que estamos acostumados a fazer):
(A|CNAME) -> usuario1.dominio.com.br -> serverIP
(A|CNAME) -> usuario2.dominio.com.br -> serverIP
(A|CNAME) -> usuario3.dominio.com.br -> serverIP
(A|CNAME) -> usuario4.dominio.com.br -> serverIP
Uma entrada usando wildcard seria:
(A|CNAME) -> *.dominio.com.br -> serverIP
Com uma entrada wildcard configurada e sua aplicação colocada no diretório padrão do seu servidor web, tudo que você tem que fazer agora é o que foi dito acima: identificar o domínio que está sendo acessado por meio da sua aplicação.
Nem tudo são flores
A maioria dos gerenciadores de DNS (a ferramenta que você usa pra fazer os apontamentos do seu domínio) não suportam ou permitem a utilização de wildcards
. O CloudFlare é um exemplo dos que não permitem isso.
Mas aí tudo que você tem que fazer pra resolver essa questão é encontrar um gerenciador DNS que te permita isso e apontar seu domínio pra ele. Pra fins de registro, o gerenciador DNS da DigitalOcean permite a utilização de wildcards
.
Boa e simples solução via .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.yourwebsite.com
RewriteCond %{HTTP_HOST} ([^.]+)\.yourwebsite.com
RewriteRule ^(.*)$ /path_to_your_site/httpdocs/work_out.php?url=$1
Donate to Site
Renato
Developer