Autor Zpráva
barkel
Profil
nadväzujem na toto fórum: Presmerovanie webov a migrácia z IIS na nginx ale vysvetlím všetko podrobne aj tu takže nemusíte strácať čas jeho čítaním.


Mám na serveri windows server 2019 bežia mi tam 3 aplikácie ktoré obsashuju vlastný http server (toto konkrétne neni apache, IIS ani Ngnix ale custom riešenie). Tieto aplikácie majú aj webové rozhranie (každý s vlastnou doménou) aj API a musia bežať na porte 80. Rovnako mám na serveri aj PHP a ASP.NET MVC stránky a weby. Tie pochopiteľne tiež musia bežať na porte 80. No lenže apache si moc nerozumie s aplikáciami ktoré bežia na porte 80. Apache si ho chce uchmatnúť celý len pre seba (možno sa to dá nejako nastaviť aby to nekolidovalo, ale načo mať zbytočne nainštalované Apache keď IIS je súčasťou OS). Preto som aj PHP weby rozchodil pod Microsoftským IIS ten si rozumie aj s inými web servermi, ktoré bežia na rovnakom porte.


Ďalej PHP beží pod IIS ako fastcgi. Ale podľa toho čo som googlil tak fastcgi neni threadsafe a môže nastať situácia že keď spadne jeden web tak pôjde dole všetko. Toho sa bojím.


Googlil som že klasické CGI je bezpečnejšie ale zase žere veľa systémových prostriedkov lenže tých ja mám dosť. A dokonca hulan myego.cz/item/php-na-windows-cgi-fastcgi-nebo-modul si robil kedysi test a vyšlo mu že CGI je rýchlejšie ako keď je PHP apache modul. Neviem či sa dá spoľahnúť na hulánov test a ešte taký starý test (medzitým sa mohlo veľa zmeniť) faktom však je že on ten test robil pod apache nie IIS.


Keď už ale hľadám najlepší pomer výkon bezpečnosť, tak neviem či neprejsť na Ngnix ten sa u nás v práci furt skloňuje a chváli a ako tak pozerám tak jeho trhový podiel narastá práve na úkor apache takže mám otázky:


1. je ngnix thread safe
2. ako je na tom s bezpečnosťou?
3. bude si rozumieť s aplikáciami bežiacimi na rovnakom porte? - Toto je pre mňa najpodstatnejšie.
4. ako sa konfiguruje existujú preň nejaké gui tools alebo nejaký zrozumiteľný konfiguračný súbor?
ttttt
Profil *
Na portu 80 může poslouchat jen jeden server / aplikace, ať už je to nginx, apache, IIS nebo přímo server aplikace. Server, který tam poslouchá, může požadavky přeposílat na jiné porty dalším serverům / aplikacíĺ. Klíčové slovo pro hledání je proxy. (ProxyHost, proxy_pass). Kdyby tam bylo víc serverů, tak není jak určit, který z nich má dostat požadavek, je to omezení protokolu, ne daných serverů.

Googlil som že klasické CGI je bezpečnejšie ale zase žere veľa systémových prostriedkov lenže tých ja mám dosť.
CGI pokud si dobře pamatuju načítá celou aplikaci při každém requestu znovu. I když máš prostředků dost, bude to pomalejší. Je-li to větší aplikace, hodně pomalé.

podľa toho čo som googlil tak fastcgi neni threadsafe
Můžeš nastavit, aby běželo víc instancí fastcgi a každá zpracovávala naráz jen jeden požadavek.

1. Ano. Ale neřeší php, jen předává požadavky dál na server, který obhospodařuje php, typicky php-fpm nebo fastcgi.
2. Dobře, stejně jako apache nebo IIS.
3. Ne, na stejném portu nemůžou běžet dva servery.
4. O klikátku nevím, konfigurační soubory bývají považované za o něco přehlednější než u apache. Je to o zvyku.
N71
Profil *
barkel:
Plácáš bohužel páté přes deváté.
Thread safety je způsob nakládání se sdílenými prostředky. IIS+FastCGI thread safe režim nepoužívá, protože nemusí. Jednotlivé requesty v IIS jsou oddělené, k žádným kolizím mezi vlákny nedochází, TS by bylo jen plýtváním výkonem.

Obecně, používat na Windows cokoliv jiného než IIS je podle mě blbost (pokud to vyloženě není vynucené nějakým nezbytným Apache modulem). Výkon Apache a nginx je v běžných podmínkách srovnatelný.

Sečteno a podtrženo, použij IIS + FastCGI s NTS buildem PHP a nevymýšlej rovnák na ohýbák.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0