Do not speak Portuguese? Translate this site with Google or Bing Translator
Sistema de subdominio dinamico

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
                 

fonte

fonte


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email