subdomeinen on-the-fly, hoe doen ze dat?

Pagina: 1
Acties:

  • kmf
  • Registratie: November 2000
  • Niet online
Je weet het wel, die sites die een gratis site of blog aanbieden. Als je een account opent, krijg je een subdomein voor je blog/site.

Zoiets als blablabla.blogspot.com, ladieladieladie.blogger.com etc.

Dit gaat natuurlijk geautomatiseerd, maar hoe doen ze dat nou? en nog belangrijker hoe onderhouden ze dat?

Aannemende dat ze linux gebruiken en dan een dns-server als bind9 gebruiken en een webserver als apache. Op de klassieke manier, zal er een configuratiebestand voor beide services gemaakt moeten worden en beide services gerestart worden.

Een config-bestand is te doen door een perlscriptje te laten runnen, of zelfs met php. Maar hoe kunnen ze de nieuwe configuratie nou laden? Lijkt me sterk dat de apache om de zoveel seconde even gerestart wordt.

En hoe zit het nou met het beheer? De configfiles zomaar verwijderen met een scriptje?

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


  • HyperDevil
  • Registratie: Oktober 2003
  • Laatst online: 15-12-2025
lama :9

[ Voor 83% gewijzigd door HyperDevil op 28-06-2005 00:44 ]


Verwijderd

*.blog.nl verwijst naar server x.

De apache op server x kijkt naar welke pagina bezocht wordt ( dus in dit voorbeeld *) en geeft die site weer.

[ Voor 9% gewijzigd door Verwijderd op 28-06-2005 00:45 ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Inderdaad. Ze hoeven overigens niet per see bind te draaien, maar er wordt geen enkele config aangepast als iemand een nieuw account maakt.

Wildcard DNS + apache die gewoon je site opzoekt in /var/www/vhosts/host.name.die.ingevuld.is/ en je bent er al.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • wacko
  • Registratie: Juni 2000
  • Laatst online: 22-01 15:21
Een truukje dat cadeau zit bij HTTP 1.1 als ik me niet vergis. Is zelf heel simpel te maken, als je zorgt dat "*.domein.nl" en "domein.nl" naar een IP verwijzen waar een webserver op draait, kan deze alle mogelijke subdomeinen opvangen. In Apache ziet dat er dan bijvoorbeeld zo uit:

NameVirtualHost *

<VirtualHost *>
ServerName bla.site.nl
DocumentRoot /var/bla
</VirtualHost>

<VirtualHost *>
ServerName hehe.site.nl
DocumentRoot /var/hehe
</VirtualHost>

<VirtualHost *>
ServerName site.nl
ServerAlias *.site.nl
DocumentRoot /var/www
</VirtualHost>

Op deze manier heb je verschillende webhost-directories voor de subdomeinen "bla" en "hehe". De rest, inclusief domein zonder subdomein ("site.nl") wordt doorverwezen naar dezelfde documentroot.

  • blimmel
  • Registratie: Augustus 1999
  • Niet online

blimmel

Matched: TeamBVD

Bij widexs staat een cgi scriptje waar je het eventueel ook mee kunt simuleren.
http://www.widexs.nl/examples/index_cgi (= platte tekst)

Join TeamBVD!


  • Osiris
  • Registratie: Januari 2000
  • Niet online
Probleem bij die mass dynamic virtual hosting-meuk is, is dat ik daardoor geen catch-all meer heb.. Zodra je dus blaaaaaaat.domein.nl hebt wil Apache een map opzoeken en vervolgens krijg je dus een 404, omdat die map niet bestaat.. :/ En ik heb tot nu toe nog niet echt gezien hoe je bij zo'n specifieke 404 een redirect ofzo kunt krijgen naar een "Deze site bestaat niet"-pagina..

  • Sprite_tm
  • Registratie: September 2002
  • Laatst online: 30-01 01:49

Sprite_tm

Semi-Chinees

Dat kan je desnoods server-side scripten: fix een php- of cgi-based 404 error message, die de meegestuurde HTTP/1.1-hostname vergelijkt met een bestand waar al je hostnames instaat, en als dat geen match oplevert een specifieke 'site not found'-error uitspuugt.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 04-02 18:11

Kippenijzer

McFallafel, nu met paardevlees

Mod_Rewrite -> Zoek map gebasseerd op opgevraagd subdomein, anders pak standaard pagina.

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 10-02 22:46

SA007

Moderator Tweaking
Wat ikzelf voor zoiets pak is dit:

Ik zet in de dns met wildcard naar de server, dan in de server (apache) mod_rewrite naar een php script die dan bekijkt welke file aangeroepen word en je doorgeeft naar dat bestand.

Voordelen:
1. Makkelijk accounts bij te maken
2. Snel aanpassingen kunnen maken
3. Makkelijk bepaalde structuren te blokkeren (te filteren via php)
4. etc....

Het is iets langzamer dan het allemaal via apache doen, maar dat geeft (aangezien apache alleen bestuurd kan worden als root) op welke manier je het ook doet een groter risico dan met php, en het is een stuk beperkter

  • tomato
  • Registratie: November 1999
  • Niet online
SA007 schreef op dinsdag 28 juni 2005 @ 14:43:
(aangezien apache alleen bestuurd kan worden als root)
:?
Liever niet lijkt me...

  • Hans
  • Registratie: Juni 1999
  • Niet online
tomato schreef op dinsdag 28 juni 2005 @ 16:16:
[...]

:?
Liever niet lijkt me...
bestuurd als in stoppen/starten/config reloaden bedoelt hij waarschijnlijk.

  • SA007
  • Registratie: Oktober 2002
  • Laatst online: 10-02 22:46

SA007

Moderator Tweaking
Idd, en als je met vhost's in de config gaat werken, moet je naar elk domein reloaden.

Wat dus inhoud dat een script die config moet aanpassen, apache moet reloaden, en dat moet hij doen als root, terwijl hij aangeroepen word vanaf een webscript, hoe je het ook wend of keert, het blijft een of onveilige of niet on-the-fly(cron) manier

  • tomato
  • Registratie: November 1999
  • Niet online
Daar heb je gelijk in, ik begreep je verkeerd ;)

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 18:50
Ik neem aan dat dergelijke grote (dynamische) sites hun content wel uit een database halen, en de subdomeinnaam zullen ze dan gewoon via de server variables uitlezen.
Kwestie van *.domeinnaam.nl als ServerAlias opnemen, en de rest in je script afhandelen. Dan hoef je met je serverconfiguratie niets te doen, en heb je ook geen mod_rewrite nodig.


edit:
ServerAlias *.domeinnaam.nl werkt dus prima binnen een <virtualhost>

[ Voor 18% gewijzigd door nescafe op 29-06-2005 02:01 ]

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


  • liberque
  • Registratie: December 2000
  • Laatst online: 14:51

liberque

Vrijzinnig!

Probleem bij die mass dynamic virtual hosting-meuk is, is dat ik daardoor geen catch-all meer heb..
In Apache2 (en volgens mij ook in Apache1) mod_rewrite aanzetten en daarna is de eerste vhost de catch-all;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<VirtualHost *:80>
        ServerName error.domein.nl
        DocumentRoot /var/onbekendevhost
</VirtualHost>

<VirtualHost *:80>
        ServerName www.domein.nl
        DocumentRoot /var/domein
        ServerAlias domein.nl
</VirtualHost>

<VirtualHost *:80>
        ServerName iets.domein.nl
        DocumentRoot /var/iets
</VirtualHost>


Zowel www.domein.nl en iets.domein.nl hebben eigen pagina's; de rest gaat naar error.domein.nl

Try looking into that place where you dare not look! You'll find me there, staring out at you!


  • BOOTZ
  • Registratie: Maart 2001
  • Laatst online: 09-02 10:21
Ik heb zoiets gebruikt op is1337.nl, je kan http://jouwnaam.is1337.nl intikken, en dan kijkt een script of je 1337 bent of niet :P

Hiervoor heb ik in de dns *.is1337.nl naar één ip laten verwijzen, en dan in de apache-config dit staan:
code:
1
2
3
4
5
6
<VirtualHost 217.115.198.231>
    ServerAdmin bootz@is1337.nl
    ServerName is1337.nl
    ServerAlias *.is1337.nl
    DocumentRoot /var/websites/bootz/www.is1337.nl
</VirtualHost>


Het domein is dus is1337.nl (daar mag geen * in staan van apache), en als alias is er *.is1337.nl.
Vervolgens is er een perlscriptje dat een bepaalde environment-variabele uitleest, en aan de hand hiervan kijkt wat je voor is1337.nl hebt ingevuld:
Perl:
1
2
3
4
# kijk welke host iemand heeft ingevuld
$host = $ENV{HTTP_HOST};
# knip hier ".is1337.nl" vanaf
$host =~ s/\.is1337\.nl$//ig;


Dit script zou dus ook kunnen kijken of een bepaald subdomein wel of niet bestaat, en als het niet bestaat een error-pagina weer kunnen geven. Bestaat het wel, dan laat je de pagina zien die bij dat subdomein hoort.

[ Voor 14% gewijzigd door BOOTZ op 29-06-2005 09:29 ]

Maak je eigen poll


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
In de DNS is het een kwestie van een catch-all aanmaken. In apache is het erg handig om gebruik te maken van RewriteMap. Ik heb bijvoorbeeld het volgende in m'n vhosts.conf staan:
code:
1
2
3
4
5
6
7
8
9
10
# define the map file
RewriteMap vhost txt:/pub/www/conf/vhostmap.map

# deal with aliases as above
RewriteCond %{REQUEST_URI} !^/icons/
RewriteCond %{REQUEST_URI} !^/cgi-bin/
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$
# this does the file-based remap
RewriteCond ${vhost:%1} ^(/.*)$
RewriteRule ^/(.*)$ %1/$1

En in die rewrite.map staat het volgende:
code:
1
2
sub1.domein.nl             /var/www/localhost/htdocs/
sub2.domein.nl             /home/pietje/public_html/


Die rewrite.map wordt elke 10 minuten opnieuw gegenereerd uit de database, dus zodra ik een nieuw (sub)domein toevoeg aan de database, werkt het binnen 10 minuten :)

  • it0
  • Registratie: April 2000
  • Laatst online: 27-12-2025

it0

Mijn mening is een feit.

Ik wist niet dat je wildcards kon gebruiken in DNS? Weet iemand of dat ook goed gaat met dns providers zoals easydns of powerdns?

  • griphin
  • Registratie: Maart 2003
  • Laatst online: 21-11-2025
it0 schreef op woensdag 29 juni 2005 @ 12:56:
Ik wist niet dat je wildcards kon gebruiken in DNS? Weet iemand of dat ook goed gaat met dns providers zoals easydns of powerdns?
Uit ervaring kan ik je vertellen dat PowerDNS wildcards accepteert (evenals URL-forwarding trouwens).
Met easydns heb ik helaas geen ervaring, maar ik neem aan dat ze informatie op hun site hebben staan?
Pagina: 1