flera webbservrar på samma IP
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
flera webbservrar på samma IP
Vi har ett system med en webbserver i. Idag hade vi velat ha två burkar på samma IP.
Enkelt tänkte vi först, ge den ena port 80 och den andra port 8080. Problemet är att applikationen använder port 443 (HTTPS) och någon annan jag inte minns.
Applikationen är byggd i javascript och HTML5 om jag fattat rätt. Den visar dynamiska data från ett mätsystem.
Hur brukar man lösa detta? Alltså att dynamiskt välja andra portnummer än 443 och den jag inte minns. Eller sätter man upp routern att routa alla portar man behöver? Funkar det?
Enkelt tänkte vi först, ge den ena port 80 och den andra port 8080. Problemet är att applikationen använder port 443 (HTTPS) och någon annan jag inte minns.
Applikationen är byggd i javascript och HTML5 om jag fattat rätt. Den visar dynamiska data från ett mätsystem.
Hur brukar man lösa detta? Alltså att dynamiskt välja andra portnummer än 443 och den jag inte minns. Eller sätter man upp routern att routa alla portar man behöver? Funkar det?
Re: flera webbservrar på samma IP
Antar att du menar samma IP utifrån sett och sedan varsin IP lokalt. Isåfall är väl det enklaste att kolla om routern stödjer port forwarding.
Då kan du ställa in, till exempel, så att port 1234 går till port 80 på server1 och port 2345 går till port 80 på server2.
Då kan du ställa in, till exempel, så att port 1234 går till port 80 på server1 och port 2345 går till port 80 på server2.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: flera webbservrar på samma IP
Jo så långt är vi helt överens.
Men jag undrar vad man ska göra med de portar som serverar det dynamiska innehållet.
För mig känns det som feltänk att man ska behöva fler portar än den vanliga HTTP-porten. Men jag vet i princip ingenting om webbprogrammering.
Men jag undrar vad man ska göra med de portar som serverar det dynamiska innehållet.
För mig känns det som feltänk att man ska behöva fler portar än den vanliga HTTP-porten. Men jag vet i princip ingenting om webbprogrammering.
Re: flera webbservrar på samma IP
> Idag hade vi velat ha två burkar på samma IP.
Med "burkar" menar du webservers eller menar du fysiska servers
med individuella anslutningar till nätverket? I det senare fallet så
kan de självklart inte ha samma IP adress.
Däremot kan man normalt köra flera instanser/kopior av webservern
på samma fysiska server. De får då samma IP adress men svarar på
olika port-nr. Den ena kan köra standard 80 och den andra ett valfritt
port-nr. Det som kan bli ett problem är brandväggar som ni inte har
egen kontroll över som kanske inte släpper igenom valfria portnummer.
När det gäller port forwarding på routern så finns det en del som
enbart stöder att ändra IP adress (men port-nr måste vara samma)
och de finns det som kan ändra både adress och port-nr.
> ...så att port 1234 går till port 80 på server1 och port 2345 går till port 80 på server2.
Om man ändå har olika nummer utåt så finns det ju ingen anledning att
köra båda på adress 80 innanför. Enklare att ha samma port-nr på båda
sidor, då fungerar länkar oavsett var man råkar sitta för tillfället.
> Men jag undrar vad man ska göra med de portar som serverar det dynamiska innehållet.
Vad är det för portar och vad menas med "dynamiskt innehåll".
Med "burkar" menar du webservers eller menar du fysiska servers
med individuella anslutningar till nätverket? I det senare fallet så
kan de självklart inte ha samma IP adress.
Däremot kan man normalt köra flera instanser/kopior av webservern
på samma fysiska server. De får då samma IP adress men svarar på
olika port-nr. Den ena kan köra standard 80 och den andra ett valfritt
port-nr. Det som kan bli ett problem är brandväggar som ni inte har
egen kontroll över som kanske inte släpper igenom valfria portnummer.
När det gäller port forwarding på routern så finns det en del som
enbart stöder att ändra IP adress (men port-nr måste vara samma)
och de finns det som kan ändra både adress och port-nr.
> ...så att port 1234 går till port 80 på server1 och port 2345 går till port 80 på server2.
Om man ändå har olika nummer utåt så finns det ju ingen anledning att
köra båda på adress 80 innanför. Enklare att ha samma port-nr på båda
sidor, då fungerar länkar oavsett var man råkar sitta för tillfället.
> Men jag undrar vad man ska göra med de portar som serverar det dynamiska innehållet.
Vad är det för portar och vad menas med "dynamiskt innehåll".
Re: flera webbservrar på samma IP
Kolla om virtualhost löser ditt problem. http://httpd.apache.org/docs/2.2/vhosts/examples.html
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: flera webbservrar på samma IP
sodjan: Tanken är att man ska kunna ha flera mätsystem i separata fysiska burkar på samma interna nät som ut mot Internet delar IP men använder olika portar.
Om man tänker sig att varje fysisk burk har en separat IP på det interna nätet och samma port för HTTP (80) är det ju inga problem att låta routern låta tex 8081, 8082, 8083... gå till olika fysiska burkar (tex IP 192.168.17.n) på det interna nätet. Allt frid och fröjd.
Men nu är det så att den som har skrivit applikationen (HTML5 och javascript (om det nu spelar någon roll)) har gjort så att vad jag betraktar som ett antal statiska webbsidor levererar något man kanske kan kalla ett "formulär" (ursäkta min bristande kunskap om aktuell jargong) som innehåller den information som inte ändras dynamiskt om man inte klickar på en länk. Det dynamiska innehållet, siffror, grafer etc levereras visst via en annan port, säg 1689 (minns inte vilken). Sedan används HTTPS någonstans som jag inte vet var och det använder port 443.
Vad är "best praxis" för en sådan applikation? Jag tycker det verkar konstigt att använda fixa portar på det här sättet. När det gäller tex ssh kan (och bör) man ju konfigurera vilken port ssh ska lyssna på.
Som du märker vet jag i stort sett ingenting om webbprogrammering. Och vill egentligen inte veta heller.
ecenier: Tvivlar på det. Det här handlar om ett antal små (fysiska) burkar som troligen kör någon lättviktsserver.
Om man tänker sig att varje fysisk burk har en separat IP på det interna nätet och samma port för HTTP (80) är det ju inga problem att låta routern låta tex 8081, 8082, 8083... gå till olika fysiska burkar (tex IP 192.168.17.n) på det interna nätet. Allt frid och fröjd.
Men nu är det så att den som har skrivit applikationen (HTML5 och javascript (om det nu spelar någon roll)) har gjort så att vad jag betraktar som ett antal statiska webbsidor levererar något man kanske kan kalla ett "formulär" (ursäkta min bristande kunskap om aktuell jargong) som innehåller den information som inte ändras dynamiskt om man inte klickar på en länk. Det dynamiska innehållet, siffror, grafer etc levereras visst via en annan port, säg 1689 (minns inte vilken). Sedan används HTTPS någonstans som jag inte vet var och det använder port 443.
Vad är "best praxis" för en sådan applikation? Jag tycker det verkar konstigt att använda fixa portar på det här sättet. När det gäller tex ssh kan (och bör) man ju konfigurera vilken port ssh ska lyssna på.
Som du märker vet jag i stort sett ingenting om webbprogrammering. Och vill egentligen inte veta heller.

ecenier: Tvivlar på det. Det här handlar om ett antal små (fysiska) burkar som troligen kör någon lättviktsserver.
Re: flera webbservrar på samma IP
Man skulle behöva ha arkitekturen uppritad på en whiteboard... 

Re: flera webbservrar på samma IP
Vilken webserver kommer du att använda dig av? Är det apache så brukar man som sagts tidigare använda sig av virtualhosts.
Du definierar då helt enkelt alla dina önskade virtuella instanser som olika hosts i din dns, men med samma ip. Sen kan apache särskilja vilket hostnamn som anropas och mapps till önskad instans. Det går ju också att mappa till olika portar om man vill det istället.
Du definierar då helt enkelt alla dina önskade virtuella instanser som olika hosts i din dns, men med samma ip. Sen kan apache särskilja vilket hostnamn som anropas och mapps till önskad instans. Det går ju också att mappa till olika portar om man vill det istället.
Re: flera webbservrar på samma IP
Ja, men gäller det även utifrån "nätet" så räcker det inte med den
egna DNS'en, då måste man (väl?) regga "riktiga" domäner.
egna DNS'en, då måste man (väl?) regga "riktiga" domäner.
Re: flera webbservrar på samma IP
En http(s)-proxy löser busenkelt ditt problem med flera maskiner som pratar på samma port, du ger dem ett eget subdomän till ert domännamn och pekar subdomänen på proxyn. Proxyn konfigurerar du att vidarebefodra sagda subdomän till rätt intern ip-adress. Det fungerar klockrent både på HTTP och HTTPS och du slipper komma ihåg konstiga portnummer och vad de kan tänkas gå till.
Problemet däremot är din okända graf-programvara som kanske använder något hemmasnickrat protokoll utan möjlighet till att särskilja dem genom namn. Har du tur kör de också HTTP men helt enkelt på en annan port för att 80 råkade vara upptagen. Är inte det fallet får du tyvärr ta och lära dig lite webbprogrammering så du kan lösa och se var problemet är
Problemet däremot är din okända graf-programvara som kanske använder något hemmasnickrat protokoll utan möjlighet till att särskilja dem genom namn. Har du tur kör de också HTTP men helt enkelt på en annan port för att 80 råkade vara upptagen. Är inte det fallet får du tyvärr ta och lära dig lite webbprogrammering så du kan lösa och se var problemet är

Re: flera webbservrar på samma IP
Du kan köra https på vilken port du vill, men du måste då ha portnumret med i URL:en.
https://www.server.com:4711 fungerar alltså om du har en programvara som lyssnar på port 4711 och klarar SSL.
Även https://www.server.com:80 fungerar om programvaran lyssnar på SSL på den porten.
Det är bara om man utelämnar portnumret som webbläsaren väljer "standardporten" för protokollet.
https://www.server.com:4711 fungerar alltså om du har en programvara som lyssnar på port 4711 och klarar SSL.
Även https://www.server.com:80 fungerar om programvaran lyssnar på SSL på den porten.
Det är bara om man utelämnar portnumret som webbläsaren väljer "standardporten" för protokollet.
Re: flera webbservrar på samma IP
Du måste ha en dns som är authorativ dns för det domän-scope du tänker använda dina klienter i. Sedan får du lägga till dina hostar där (antingen som cname till samma a-record, eller a-records med samma ip) och definiera dem med virtualhost direktiv i apache. T.ex. www1.domain.com, www2.domain.com, www3.domain.com osv.sodjan skrev:Ja, men gäller det även utifrån "nätet" så räcker det inte med den
egna DNS'en, då måste man (väl?) regga "riktiga" domäner.
Edit: Man kan givetvis i värsta fall (eller för test) lägga till önskade hostnamn i klientens hosts-fil också.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: flera webbservrar på samma IP
Punkt ett: Som sagt, jag vet egentligen ingenting om webbprogrammering. Jag är beredd att lära mig hur man sätter upp "portforwarding" och liknande. Men inte webbprogrammering.
Punkt två: Nej, Apache är INTE det vi använder. Ber om ursäkt om någon känner sig kränkt. Förslag hur man löser det med Apache är ingen hjälp. Ledsen.
Punkt tre: Intressant "input":
sodjan: Varför skulle man behöva riktiga domäner? Jag ifrågasätter inte vad du skriver, jag förstår bara inte.
Muppis: Vi vill helst inte hålla på och batta med domäner. Det är kundens domän.
Det är möjligt att det är något jag inte fattar och då hoppas jag du vill förklara.
Ärligt talat vet jag inte hur den här graf-programmvaran fungerar men jag tvivlar på att det är hemsnickrat. Det tror jag upphovshenen är för lat för.
Nerre: Men hur gör man om man har "ett knippe" portar man vill använda? Som dessutom är lika i alla webservrar?
Som ni märker famlar jag i mörker. Det här är inte min del i projektet men jag verkar vara den enda som inser det potentiella problemet. Eller också så håller alla andra bara käft.
Punkt två: Nej, Apache är INTE det vi använder. Ber om ursäkt om någon känner sig kränkt. Förslag hur man löser det med Apache är ingen hjälp. Ledsen.
Punkt tre: Intressant "input":
sodjan: Varför skulle man behöva riktiga domäner? Jag ifrågasätter inte vad du skriver, jag förstår bara inte.
Muppis: Vi vill helst inte hålla på och batta med domäner. Det är kundens domän.

Ärligt talat vet jag inte hur den här graf-programmvaran fungerar men jag tvivlar på att det är hemsnickrat. Det tror jag upphovshenen är för lat för.
Nerre: Men hur gör man om man har "ett knippe" portar man vill använda? Som dessutom är lika i alla webservrar?
Som ni märker famlar jag i mörker. Det här är inte min del i projektet men jag verkar vara den enda som inser det potentiella problemet. Eller också så håller alla andra bara käft.
Re: flera webbservrar på samma IP
> sodjan: Varför skulle man behöva riktiga domäner? Jag ifrågasätter inte vad du skriver, jag förstår bara inte.
Det var nog inte helt korrekt och det rättades i ett senare inlägg.
> Nej, Apache är INTE det vi använder.
Vill du att vi gissar på en webserver i taget eller kan du säga det direkt istället?
För övrigt så är det alldeles för många obekanta i ekvationen för att det
ska vara speciellt meningsfullt att försöka kommentera det vidare. Antingen
får du ge en lite mer komplett beskrivning eller så får du ta diskussionen
direkt med kunden. Varje gång en lösning föreslås så hittar du något
som omöjliggör just *den* lösningen...
Det var nog inte helt korrekt och det rättades i ett senare inlägg.
> Nej, Apache är INTE det vi använder.
Vill du att vi gissar på en webserver i taget eller kan du säga det direkt istället?
För övrigt så är det alldeles för många obekanta i ekvationen för att det
ska vara speciellt meningsfullt att försöka kommentera det vidare. Antingen
får du ge en lite mer komplett beskrivning eller så får du ta diskussionen
direkt med kunden. Varje gång en lösning föreslås så hittar du något
som omöjliggör just *den* lösningen...

Re: flera webbservrar på samma IP
Du får använda olika portnummer i din url.
http://www.server.com:1001 routas till första serverns första port
http://www.server.com:1002 routas till första serverns andra port
http://www.server.com:1003 routas till första serverns tredje port
http://www.server.com:1101 routas till andra serverns första port
http://www.server.com:1102 routas till andra serverns andra port
http://www.server.com:1103 routas till andra serverns tredje port
osv.
I din router sätter du upp regler som vidarbefordrar portarna, typ
*:1001 -> server1ip:serverport1
osv
Exakt hur du gör det i routern får du läsa dig till.
Jag gör själv så, på jobbet.
Har ett antal olika servrar som är tillgängliga utifrån, flera av dem använder samma portar.
Alternativt är ju, beroende på vilken ISP som används att ha olika IP till modemet, och sätta upp den externa DNSen med domännamn för de olika servrarna, gör så också.
mina regler ser ut så här:
Jag har naturligtvis maskerat IP och portar ovan.
extIP1 och extIP2: två av de externa IP-adresserna jag har till modemet
ExtPortXY... : portnummret som man använder i URLen för att komma åt servern.
intportQ: den interna porten som servern använder för tjänsten (exvis 80 är default för http osv)
Till extIP har jag sedan knutit ett antal olika subdomäner i min leverantörs namn-server
Exchangeservern ligger på eget IP och egen subdomän.
Ekonomisystemet ligger på eget IP och egen subdomän.
SVN, Atlassian, intranet mm ligger på samma IP men olika externa portar och till viss del olika interna portar.
RDP liggfer på samma IP, olika externa portar, routas till resp server som använder samma port.
Snurrar både IIS och APACHE i blandad konfiguration.
http://www.server.com:1001 routas till första serverns första port
http://www.server.com:1002 routas till första serverns andra port
http://www.server.com:1003 routas till första serverns tredje port
http://www.server.com:1101 routas till andra serverns första port
http://www.server.com:1102 routas till andra serverns andra port
http://www.server.com:1103 routas till andra serverns tredje port
osv.
I din router sätter du upp regler som vidarbefordrar portarna, typ
*:1001 -> server1ip:serverport1
osv
Exakt hur du gör det i routern får du läsa dig till.
Jag gör själv så, på jobbet.
Har ett antal olika servrar som är tillgängliga utifrån, flera av dem använder samma portar.
Alternativt är ju, beroende på vilken ISP som används att ha olika IP till modemet, och sätta upp den externa DNSen med domännamn för de olika servrarna, gör så också.
mina regler ser ut så här:
Kod: Markera allt
NAT_FORWARD_TCP="extIp1#0/0~1443>192.168.a.b extIp1#0/0~25,80,443>192.168.c.d extIp2#0/0~1723,443>192.168.e.f ExtPortXY>192.168.g.h ExtPortXY2>192.168.i.j~intportQ ExtPortXY3>192.168.k.l~intportQ ExtPortXY4>192.168.m.n~intportQ ExtPortXY5>192.168.o.p~intportQ ExtPortXY6>192.168.q.r~intportQ"
NAT_FORWARD_UDP="ExtPortXY7>192.168.s.t extIp2#0/0~53,500,4500>192.168.u.v"
NAT_FORWARD_IP="extIp2#0/0~47,50>192.168.w.x"
extIP1 och extIP2: två av de externa IP-adresserna jag har till modemet
ExtPortXY... : portnummret som man använder i URLen för att komma åt servern.
intportQ: den interna porten som servern använder för tjänsten (exvis 80 är default för http osv)
Till extIP har jag sedan knutit ett antal olika subdomäner i min leverantörs namn-server
Exchangeservern ligger på eget IP och egen subdomän.
Ekonomisystemet ligger på eget IP och egen subdomän.
SVN, Atlassian, intranet mm ligger på samma IP men olika externa portar och till viss del olika interna portar.
RDP liggfer på samma IP, olika externa portar, routas till resp server som använder samma port.
Snurrar både IIS och APACHE i blandad konfiguration.