Autor Téma: Více serverových aplikaci na jedné IP  (Přečteno 458 krát)

Offline Jura

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 2
Více serverových aplikaci na jedné IP
« kdy: 28-11-2020, 17:47:47 »
Mám problém, který určitě řešila už spousta lidí přede mnou, tak si rád nechám poradit. Mám Windows server s přidělenou IP a rád bych na něm provozoval několik serverových aplikací napsaných v Delphi, které by reagovaly na portu TCP 80.

V ideálním případě by to bylo tak, aby request na mojeadresa.cz/algoritmus1/NejakeParametry odchytával spuštěný program Algoritmus1.exe, a request na mojeadresa.cz/algoritmus2/NejakeParametry odchytával Algoritmus2.exe.

Napadá mě pár způsobů, jak to udělat a každý je špatně:
1) zkompilovat oba algoritmy do jednoho exáče, takže mají společné rozhraní, které pak dotazy roztřídí, něco jako OdesliZpet(Algoritmus1.Zpracuj(NejakeParametry)); problém pak ale je, že při změně jednoho programu budu muset celou tu věc překompilovávat, navíc programy spolu prakticky nesouvisí, takže by to bylo takové dost špinavé řešení.

2) Totéž, akorát programy zpracovat jako DLL, takže byto bylo aspoň trochu fyzicky oddělené.

3) udělám nějaký InputOutput prográmek, který bude odchytávat dotazy a následně je distribuovat jednotlivým programům buď přes konzoli nebo přes lokální síť na jiných portech, nebo přes Windows zprávy nebo schránku... tady se mi zase nelíbí ten overhead;

Tak nějak doufám, že se najde nějaké standardní řešení, o kterém nevím. Představoval bych si nějakou utilitu, která třeba poslouchá na portu 80 a když vidí, že adresa obsahuje /algoritmus1, tak podle nějakých předem definovanýchj pravidel přepošle zprávu na jiném portu, na kterém si ji už odchytne aplikace Algoritmus1.exe.

Hezký víkend vespolek!

Jiří

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1134
  • Karma: 49
    • Verze Delphi: 10.3
Re:Více serverových aplikaci na jedné IP
« Odpověď #1 kdy: 28-11-2020, 17:55:02 »
Excellent
Rated 1 time
Asi bych se s vlastní utilitkou netrápil. Ve škole jsme takhle nějak přesměrovávali v rámci běžícího Apache. Apache běžel na 172.17.8.15:80, zatímco k Bakaláři běželi na virtuálních Win XP na 172.17.8.62:80.

ProxyRequests off
ProxyPass /znamky/ http://172.17.8.62/znamky/
ProxyPassReverse /znamky/ http://172.17.8.62/znamky/
ProxyPassReverse /znamky/ http://virtxp1.xxxxxx.8.i/znamky/


nginx to určitě umí taky, ten ale neznám (nám na Apachi běžela spousta dalších věcí, tak nám "moloch" nevadil).

Offline Jura

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 2
Re:Více serverových aplikaci na jedné IP
« Odpověď #2 kdy: 28-11-2020, 18:15:43 »
Díky, přesně takhle jsem potřeboval nasměrovat...
« Poslední změna: 28-11-2020, 18:40:16 od Jura »

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 191
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Více serverových aplikaci na jedné IP
« Odpověď #3 kdy: 28-11-2020, 19:08:05 »
Riesenie uz asi je, ale potazmo by sa dalo pouzit aj taketo nieco -
1/ dotaz prichadzajuci na adresu ...xyz.sk/uloha1 na porte 80/443 sa presmeruje na port 8181 a program spracovavajuci ulohu 1 pocuva na porte 8181
2/ dotaz prichadzajuci na adresu ...xyz.sk/uloha2 na porte 80/443 sa presmeruje na port 8182 a program spracovavajuci ulohu 2 pocuva na porte 8182

odpoved na dotaz sa vrati tak ako ma, nikto zvonku nebude vediet o tom "internom pre-portovani".
myslim, ze toto by mohli vediet aj nejake routre... ci tam len presmerovanie port na port?

Offline Jura

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 2
Re:Více serverových aplikaci na jedné IP
« Odpověď #4 kdy: 28-11-2020, 21:21:47 »
Jo, přesně něco takového potřebuju, akorát hledám, jak to co nejefektivněji udělat...

Rád bych to udělal rovnou ve Windows, aby to nebylo závislé na tom, jak se kdo rozhodne přenastavit router.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3103
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:Více serverových aplikaci na jedné IP
« Odpověď #5 kdy: 29-11-2020, 09:03:59 »
Excellent
Rated 1 time
Tak nějak doufám, že se najde nějaké standardní řešení
Mezi standardni reseni urcite patri IIS a pod nej v Delphi ruzne ISAPI aplikace, ale zkusenost s tim nemam, resp. mam z tak davne doby, ze si z toho pamatuju jen tudy ne a od te doby jsme uz servery nikdy nedelali v Delphi, ale v Pythonu (Django), Java EE (Wicket) a .NET (MVC)  :)

Ale mozna, ze uz ten Delphi trochu posunuli napr. https://danieleteti.gitbooks.io/delphimvcframework/content/
« Poslední změna: 29-11-2020, 09:11:18 od pf1957 »

Offline František

  • Guru
  • *****
  • Příspěvků: 619
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Více serverových aplikaci na jedné IP
« Odpověď #6 kdy: 29-11-2020, 09:39:11 »
Asi bych se s vlastní utilitkou netrápil. Ve škole jsme takhle nějak přesměrovávali v rámci běžícího Apache. Apache běžel na 172.17.8.15:80, zatímco k Bakaláři běželi na virtuálních Win XP na 172.17.8.62:80.

ProxyRequests off
ProxyPass /znamky/ http://172.17.8.62/znamky/
ProxyPassReverse /znamky/ http://172.17.8.62/znamky/
ProxyPassReverse /znamky/ http://virtxp1.xxxxxx.8.i/znamky/


dalo by sa podrobnejsie? dalo by sa to vyuzit aj na presmerovanie na zaklade subdomeny? (mam jednu verejnu IP a lokalne viac virtualov... mam to teraz na zaklade portov a NAT)

Offline geby

  • Plnoletý
  • ***
  • Příspěvků: 227
  • Karma: 16
    • Verze Delphi: 7, 2007, XE2, 10.2
    • Synapse
Re:Více serverových aplikaci na jedné IP
« Odpověď #7 kdy: 29-11-2020, 17:04:35 »
Trochu nám to uteklo od Delphi k Apache. Ano dá, v Apache si udejej virtuální server pro tu jinou doménu, a tu reverzní proxy si nadefinuj pro každou doménu jak chces.