Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2011-08-04, 08:38
  #1
Medlem
Hej!

Jag har en publik ip-adress och 3 st virtuella servrar med 3 olika interna ip.
Hur gör jag så att te.x mensmonster.se går till 192.168.1.45 och morot.se går till 192.168.1.46 när man skriver in adressen i webläsaren?

Jag har tittat den här:
http://httpd.apache.org/docs/2.0/vhosts/ip-based.html

Ska jag skriva in syntaxen på mensmonster.se och morot.se? Jag har provat men får inte rätt på det.
Citera
2011-08-04, 08:40
  #2
Medlem
Hur har du kopplat nätverket?
Har du 3+1 server?
Citera
2011-08-04, 09:06
  #3
Medlem
Citat:
Ursprungligen postat av HugeSackOfNachos
Hur har du kopplat nätverket?
Har du 3+1 server?

Jag har en router(clearos) där internet går in, sen går det vidare till min rack-switch som i sin tur knyter ihop de andra datorerna här på nätverket..

Jag har 1 server där jag kör proxmox som har 3-4 virtuella os. Varje virtuell dator får ett internt ip av routern.

Så frågan är hur jag kopplar en domän till ett internt ip..
__________________
Senast redigerad av OrvarMedKorvar 2011-08-04 kl. 09:12.
Citera
2011-08-04, 12:12
  #4
Medlem
Citat:
Ursprungligen postat av OrvarMedKorvar
Jag har en router(clearos) där internet går in, sen går det vidare till min rack-switch som i sin tur knyter ihop de andra datorerna här på nätverket..

Jag har 1 server där jag kör proxmox som har 3-4 virtuella os. Varje virtuell dator får ett internt ip av routern.

Så frågan är hur jag kopplar en domän till ett internt ip..


Okej, vet inte om jag kan hjälpa dig med det.. Hursomhelst tror jag att hosta på virtuella OS snor onödigt mkt prestanda.. Släng bort virtuella burkarna och konfigurera hostnames -> virtuella hosts i apache istället, så att du bindar hostname till mappar.. Typ morot.se till /home/morot.se/www/ osv.
Citera
2011-08-04, 12:19
  #5
Medlem
Apache är knappast resurshungrigt så du behöver inte slänga något alls...

Du behöver antingen editera dina host filer så att domänerna pekar på ipadresserna eller sätta upp en intern DNS som sköter det åt dig..

Sedan kan du köra flera domäner på samma apacheserver genom att använda virtualhosts, då filtrerar apache trafiken rätt beroende på vad som står i inkommande http-headers..

exvis morot.se pekar på en katalog och mensmonster.se pekar på en annan katalog på samma apacheserver.
Citera
2011-08-04, 12:24
  #6
Medlem
Citat:
Ursprungligen postat av HugeSackOfNachos
Okej, vet inte om jag kan hjälpa dig med det.. Hursomhelst tror jag att hosta på virtuella OS snor onödigt mkt prestanda.. Släng bort virtuella burkarna och konfigurera hostnames -> virtuella hosts i apache istället, så att du bindar hostname till mappar.. Typ morot.se till /home/morot.se/www/ osv.

Jo, så har jag gjort förut men det ska gå att göra det ip-baserat också. Jag tycker det är smidigt med virtuella burkar.. kör man sen openvz-containers så är det ännu bättre. Men det tar vi i en annan tråd

Man skulle ju kunna använda sig av portar för de olika sidorna men det känns onödigt..
Citera
2011-08-04, 12:40
  #7
Medlem
Citat:
Ursprungligen postat av -strife-
Apache är knappast resurshungrigt så du behöver inte slänga något alls...

Du behöver antingen editera dina host filer så att domänerna pekar på ipadresserna eller sätta upp en intern DNS som sköter det åt dig..

Sedan kan du köra flera domäner på samma apacheserver genom att använda virtualhosts, då filtrerar apache trafiken rätt beroende på vad som står i inkommande http-headers..

exvis morot.se pekar på en katalog och mensmonster.se pekar på en annan katalog på samma apacheserver.

ok, vilket är smidigast? Jag har tillgång till både en intern dns och apache.
Citera
2011-08-04, 13:20
  #8
Medlem
Citat:
Ursprungligen postat av OrvarMedKorvar
ok, vilket är smidigast? Jag har tillgång till både en intern dns och apache.


Använder man hosts-filerna måste man skriva in ändringarna på alla maskiner i nätverket. Använder man DNS behöver man bara ändra zonfilen så länge hostarna på nätverket frågar DNSen..

Har du redan DNS så är svaret enkelt, lägg till A records för varje domän som pekar mot respektive IP i den.

Annars pekar du båda domäner mot samma IP och istället konfigurerar apache att hosta båda domäner, hur man konfar apache är jag däremot inte så insatt i. Funktionen heter virtual hosts i alla fall.
Citera
2011-08-04, 14:03
  #9
Medlem
ensamvalps avatar
Kod:
Listen 80

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>

Kan det vara det du är ute efter?
Citera
2011-08-04, 15:05
  #10
Medlem
Citat:
Ursprungligen postat av ensamvalp
Kod:
Listen 80

<VirtualHost 172.20.30.40>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>

<VirtualHost 172.20.30.50>
DocumentRoot /www/example2
ServerName www.example2.org
</VirtualHost>

Kan det vara det du är ute efter?

Det gäller bara om servern har två eller fler IPadresser (ie flera NICs), annars får man nog använda sig av
Kod:
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.com
</VirtualHost>
om jag inte mins fel
Citera
2011-08-04, 22:47
  #11
Medlem
blueCommands avatar
Nu tror jag att de flesta snurrar runt - hoppas inte jag gör det.

Om jag har förstått TS rätt så har han ett externt IP - alltså ett IP att välja på när han pekar DNS-namnen för sina besökare. Alltså skall alla domäner har ett A-record som pekar på detta externa IP. Inget annat skulle fungera, han kan inte sätta en RFC1918-IP där (det skulle givetvis fungera lokalt men inte för någon annan).

Så så långt är allt klart. Då kommer vi till TS router. Den stackars routern måste på något sätt få reda på vilken dator som den skall serve:a. Det är här det blir jobbigt då TS insisterar med att ha flera virtuella maskiner med olika IP-nummer. Routern ser normalt sett bara på OSI3/4 vilket i detta fallet innebär externt-IP på port 80. Man kan lösa detta genom att flytta så sida A får 80, sida B 81 osv men det blir sällan bra utan ytterligare utrustning.

Så det vi vill göra här är att få routern att kolla på "Host"-direktivet. Möt backendproxy. Här kan vi konfigurera t.ex. en Squid-proxy att skicka de anrop med domän A till 192.168.0.A, de med domän B till 192.168.0.B osv. Konfigurationen på virtuella maskinerna blir trivial. Nackdelen är att de virtuella maskinerna tror att request:en kommer lokalt (om man inte kollar på X-Forwarded-For eller dylikt). Det går säkert även att lösa med DPI på iptables eller dylikt, men det har jag aldrig lekt med.

Så, då har vi löst TS problem som det var formulerat. Däremot, om jag får vara sådant, vill jag föreslå en lösning som tidigare har nobbats av ett rätt bisarrt skäl: prestanda?

Mitt förslag är att köra en virtuell maskin och då konfigurera din router att skicka all TCP port 80 till denna maskin och sedan sköta "Host"-direktivet (vhost) i din webbserver istället. Du får fina loggar och allt är smidigt - totalt sett mycket enklare att sätta upp.

Ang. prestanda så är det tråkigt hur -strife- kan ignorera behovet av att ha en hel OS-instans rullandes för något sådant trivialt som en vhost - TS har inte nämnt om han använder OpenVZ eller KVM så att dra sådana slutsatser är farligt.
Citera
2011-08-04, 23:22
  #12
Medlem
ensamvalps avatar
Citat:
Ursprungligen postat av -strife-
Det gäller bara om servern har två eller fler IPadresser (ie flera NICs), annars får man nog använda sig av
Kod:
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/example2
ServerName www.example2.com
</VirtualHost>
om jag inte mins fel

Tror jag missförstod TS lite nu. Alltså han kör 3st VMs (guests), trodde han menade virtuella hostar i Apache från början

Men iaf så tycker jag att den bästa lösning är att köra 1 webbserver som man sedan lägger upp vhostar på
__________________
Senast redigerad av ensamvalp 2011-08-04 kl. 23:29.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback