Skocz do zawartości
Gość Mattonit

apache vs nginx

Polecane posty

Gość Mattonit

Witajcie!

zastanawiam się, które oprogramowane jest stabilniejsze, ma mniejsze zużycie zasobów itp...

Jakieś opinie? czego wy używacie? ja obecnie korzystałem jedynie z apache2 ale interesują mnie alternatywne rozwiązania :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość mpm1122

Jeżeli mogę się wtrącić, to jak wygląda sprawa awaryjności oraz szybkością w przypadku Nginx? Jak na razie spotkałem się z Apache oraz Lighttpd i muszę przyznać, że to drugie spisuje się znacznie lepiej Apache.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Apache z fcgid też się dobrze spisuje ;)

O ile przepiszesz sobie rewrite, jak używasz, to możesz dzialać na lighcie czy nginxie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Mattonit

zgadzam sie, ze apache dobra rzecz ale bardzo interesuje mnie temat nginxa :)

nie chce zakladac nowego tematu a bardzo mnie to zastanawia czy znacie jakies darmowe panele pod hosting pod nginx? Nie koniecznie ale miloby bylo zeby ladnie smigaly z pgsql (nie chce instalowac mysql) :) Pod nginxem podobno zadziala ispconfig, z ktorego korzystam na serwerze z apache + mysql ale nie wiem jak wyglada sprawa ispconfiga + postgresql

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Apache spokojnie może działać skonfigurowany z głową, a nginx wykorzystać jako proxy przed nim i obsługę statyki.

Z tego co kojarzę ispconfig nie obsługuje oficjalnie postgresa, choć sam postgres już lekko odchodzi w zapomnienie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Apache spokojnie może działać skonfigurowany z głową, a nginx wykorzystać jako proxy przed nim i obsługę statyki.

 

Po co dodawać dodatkowe obciążenie?

 

Z tego co kojarzę ispconfig nie obsługuje oficjalnie postgresa, choć sam postgres już lekko odchodzi w zapomnienie.

 

Skąd takie przypuszczenie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja polecam nginx, a jeżeli chodzi o stabilność i awaryjność to stabilny i bezawaryjny. Trzeba tylko przepisywać regułki rewrite, nie ma .htaccess, jest 1350813508 razy szybszy niż Apache, polecam do tego PHP-FPM.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

jakie obciążenie? nginx jako reverse proxy przed apache'm to bardzo fajne rozwiązanie, potwierdzam.

 

opis dla zainteresowanych:

 

http://www.ubuntugee...f-your-vps.html

 

Nginx + Apache bedzie wolniejszy niż sam Nginx. Więc jako takie jest to rozwiązanie conajwyżej dla kogoś kto nie umie konfigurować nginx-a, a zna się na apache.

 

Jak autor tutoriala sam podał:

 

I hate fastCGI, I've never had very good luck with it and most importantly I know Apache

 

Czytanie takich tutoriali bardziej szkodzi niż pomaga w czymkolwiek.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nginx + Apache bedzie wolniejszy niż sam Nginx.

 

 

Sam Nginx nie obsłuży Ci PHP - potrzebny jest jakiś backend do tego i albo będzie nim Apache z mod_php albo php-fpm albo jeszcze coś innego. Jeżeli w każdym przypadku pliki statyczne idą przez Nginxa to jedyne co w takiej konfiguracji możemy porównywać to wydajność backendu + ewentualnie wydajność wsparcia w Nginxie dla proxy i FastCGI. Z ciekawości: swoje stwierdzenie opierasz na jakichś benchmarkach czy tylko intuicji? Jeżeli możesz się podzielić jakimiś danymi na temat wydajności apache z mod_php w porównaniu do php-fpma to chętnie bym zobaczyła. Nie spodziewam się drastycznej różnicy przy dobrze skonfigurowanym apache. Oprócz wydajności ważna jest również wygoda i na pewno plusem konfiguracji z Apache jest to, że nie trzeba przepisywać .htaccessów.

 

M.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość mFilmy.com

Ze swojej strony polecam lighttpd, nigdy mnie nie zawiódł. Aczkolwiek o nginx nie mogę powiedzieć złego słowa:)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sam Nginx nie obsłuży Ci PHP - potrzebny jest jakiś backend do tego i albo będzie nim Apache z mod_php albo php-fpm albo jeszcze coś innego. Jeżeli w każdym przypadku pliki statyczne idą przez Nginxa to jedyne co w takiej konfiguracji możemy porównywać to wydajność backendu + ewentualnie wydajność wsparcia w Nginxie dla proxy i FastCGI. Z ciekawości: swoje stwierdzenie opierasz na jakichś benchmarkach czy tylko intuicji? Jeżeli możesz się podzielić jakimiś danymi na temat wydajności apache z mod_php w porównaniu do php-fpma to chętnie bym zobaczyła. Nie spodziewam się drastycznej różnicy przy dobrze skonfigurowanym apache. Oprócz wydajności ważna jest również wygoda i na pewno plusem konfiguracji z Apache jest to, że nie trzeba przepisywać .htaccessów.

 

M.

 

Oczywiście, z nginx zwykle się używa fpm - z tego samego backendu może korzystać również apache. Apache z mod_php jest trochę szybszy, ale używa dużo pamięci, wiec jego użycie przy bardziej obciążonych stronach odpada.

Także korzystając z tandemu nginx - apache, dodajesz kolejny "point of failure" do systemu. Jak napisałaś "nie trzeba przepisywać .htaccessów" - to czynność zwykle jednorazowa (dobre aplikacje posiadają konfiguracje pod nginx-a), a wygoda konfiguracji to rzecz subiektywna - osobiście uważam, że nginx jest o wiele wygodniejszy.

 

Jeśli chodzi o benchmarki to różne są np. http://darrylclarke.com/2011/12/22/the-switch-apache-mod_php-to-nginx-php-fpm/

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ja osobiście też dodam parę groszy od siebie, jako że korzystałem z obydwu.

 

Apache jest na 100% prostszy w konfiguracji, do tego przynajmniej na tą chwilę posiada większy support w postaci tutoriali czy paneli. Nginx jest dosyć nowym rozwiązaniem, może nie pod kwestią samego roku wydania, ale statystyk używalności jednego i drugiego.

 

Jeśli mówimy o plikach statycznych to wg mojej skromnej opinii nginx wygrywa z apachem. Zresztą właśnie to było jedno z głównych założeń jego produkcji - pliki statyczne i proxy. Nie robiłem jakiś dokładnych benchmarków, ale prosta strona bazująca na htmlu i css'ie ładowała się szybciej na nginxie.

 

Teraz przejdźmy do PHP. Tak naprawdę opcji jest wiele - na samym apache'u najprostszą metodą jest mod_php, jest to rozwiązanie bardzo dobre wyłącznie dla niewielkich serwisów. Tak naprawdę jak już moi poprzednicy dobrze napisali mod_php jest na 100% szybszy od innych rozwiązań, ale zżera za dużo zasobów, przede wszystkim ramu i działa o wiele wolniej gdy ma przetworzyć dużą ilość żądań na raz. Resztę opcji wspiera zarówno nginx jak i apache. Osobiście sądzę, że najlepszym rozwiązaniem jest dobrze skonfigurowany nginx z parsowaniem skryptów php do php-fpm. Jest to po pierwsze dość łatwe w konfiguracji (tak naprawdę parę linijek do configu), a efekty są bardzo ładne. Dodatkowo dla fanatyków security można odpowiednich workerów zarówno nginxa jak i php-fpm bardzo ładnie oddzielić chrootem od reszty, przez co user nie jest tak naprawdę w stanie wyrządzić szkody na maszynie. Tu mnie pewno wiele innych osób poprawi, że "na innych też się tak da", ale osobiście sądzę, że jest to najlepsze rozwiązanie :).

 

Podsumowując. Jak ja bym zrobił -

 

Strona z plikami statycznymi - nginx

Strona PHP z małą ilością odwiedzin - apache + mod_php

Strona PHP z większą ilością odwiedzin - nginx + php-fpm

 

W ostatnim punkcie jeszcze można eksperymentować z chociażby apache'm + (Fast)CGI, ale mod_php omijać szerokim łukiem.

 

 

Co do .htaccess to większość zarówno darmowych, jak i komercyjnych aplikacji ma w konfiguracji podane rewrite'y dla nginxa, jeśli nie mają to zawsze znajdzie się jakieś amatorskie na googlu, a jeśli nawet takowych nie ma to nie jest to jakiś większy problem je przepisać :).

 

Jeśli chodzi o konfigurację nginx + apache to nie jest to najgorsze rozwiązanie, aczkolwiek ja je uważam za całkowicie zbędne. Nginx z php-fpm działa teoretycznie na identycznej zasadzie jak nginx + apache z php.

Edytowano przez Archi (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys
Po co dodawać dodatkowe obciążenie?

Nie jest to obciążenie, a jego zbicie go w dół w przypadku użycia samego apache.

Apache ma dobrą wydajność przy współpracy z mod_php i przed nim może stać spokojnie nginx, by obsługiwać połączenia z zewnątrz.

Tak wiem, że apache 2.4 .. :)

 

Skąd takie przypuszczenie?

Postgres jest niszowy i z reguły w ostatnim czasie korzystali z niego programiści zapaleni w szukaniu różnych dziwnych rzeczy przez co pisali prostą aplikacje opierającą się o postgresa, cassandre, ruby, jave i brakowało tam mogodb :)

Tak naprawdę nie widziałem by coś nowego korzystało z baz Postgres, osobiście nic do nich nie mam, ale naprawdę nie widziałem.

 

Nginx + Apache bedzie wolniejszy niż sam Nginx. Więc jako takie jest to rozwiązanie conajwyżej dla kogoś kto nie umie konfigurować nginx-a, a zna się na apache.

Nginx obsłuży połączenie, sam będzie szybszy, ale zostaje to php którego on sam w sobie nie zna.

Przed apache można też postawić haproxy/varnish które mogą przy odpowiedniej konfiguracji pomóc stworzyć wydajne środowisko.

@megi: zostaje jeszcze opcja uruchomienia na stałe n procesów przez spawn-fcgi i wpięcia pod fastcgi nginx'a.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie jest to obciążenie, a jego zbicie go w dół w przypadku użycia samego apache.

Apache ma dobrą wydajność przy współpracy z mod_php i przed nim może stać spokojnie nginx, by obsługiwać połączenia z zewnątrz.

Tak wiem, że apache 2.4 ..

 

Obojętnie jak nie wykombinujesz, to zawsze nginx przed apache będzie dodatkowo zabierał "mocy". Jak pisałem wcześniej, mod_php nie nadaje się do poważniejszych zastosowań ze względu na wyższe zużycie pamięci i inne problemy - np.

przy dużym obciążeniu po prostu się wysypuje.

 

Postgres jest niszowy i z reguły w ostatnim czasie korzystali z niego programiści zapaleni w szukaniu różnych dziwnych rzeczy przez co pisali prostą aplikacje opierającą się o postgresa, cassandre, ruby, jave i brakowało tam mogodb

Tak naprawdę nie widziałem by coś nowego korzystało z baz Postgres, osobiście nic do nich nie mam, ale naprawdę nie widziałem.

 

Zależy w jakim środowisku się obracasz. Oczywiście stosowanie Postgresa do prostych stronek itd mija się z celem ze względu na to, że jest bardziej zaawansowany od MySQL, przez co większość jego możliwości nie zostanie wykorzystana.

 

Nginx obsłuży połączenie, sam będzie szybszy, ale zostaje to php którego on sam w sobie nie zna.

 

Tak samo jak php nie zna Apache (gdy nie używamy mod_php, którego wady wymieniłem wyżej)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Wiem, że fajniej były by postawić Varnisha, ale przypomnę, że chodziło o zestawienie Nginxa jako proxy przed serwerem by przyjął żądania i dodatkowo oddelegowanie subdomeny z statyką na czystego nginx.

Co po pierwsze zabezpieczyło by Apache i odciążyło od obsługi połączeń, a po drugie obsłużył by statykę. Ale jeżeli uważasz, że Nginx w trybie proxy i podający osobno statykę zamiast Apache wytworzy wyższe obciążenie, to ok.

 

mod_php ma problem z ramem ? Nie oszukujmy się problem jest w samym php i php-cgi/php-fpm też go używa.

Fakt nie widziałem mod_php w jakiś większych stronach, ale widziałem jak to drugie "wpieprza ram".

Więc nie mam porównania, choć w wolnej chwili mogę zrobić test przerzucając coś z cgi/fpm na apache + mod_php.

 

O Postgresie napisałem, tylko że ja go nie widziałem w nowych projektach/startupach, a Ty o jego zaawansowaniu.

Nie neguje go, ale też nie pracuje na nim od dawna, a MySQL może nie jest taki słaby http://www.mysql.com/customers/ ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Co po pierwsze zabezpieczyło by Apache i odciążyło od obsługi połączeń, a po drugie obsłużył by statykę. Ale jeżeli uważasz, że Nginx w trybie proxy i podający osobno statykę zamiast Apache wytworzy wyższe obciążenie, to ok.

 

Uważam, że sam nginx jest lepszym rozwiązaniem niż nginx + apache

 

Więc nie mam porównania, choć w wolnej chwili mogę zrobić test przerzucając coś z cgi/fpm na apache + mod_php.

 

Przy większym obciążeniu jest duża szansa, że mod_php padnie, a fpm powinien działać dalej.

 

O Postgresie napisałem, tylko że ja go nie widziałem w nowych projektach/startupach, a Ty o jego zaawansowaniu.

Nie neguje go, ale też nie pracuje na nim od dawna, a MySQL może nie jest taki słaby http://www.mysql.com/customers/ ?

 

Nie wszystkie projekty są przecież open source i nie każdy się chwali czego używa. W poważnych projektach zwykle stawia się na rozwiązania Oracle, Microsoft albo właśnie na Postgresa.

Nie napisałem, że MySQL jest słaby. Każde narzędzie przecież ma swoją niszę do której nadaje się najlepiej.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Łukasz Tkacz

Mod_php na pewno weźmie więcej RAMu gdy zwiększy się nam ruch, bo czy ktoś będzie otwierał stronę, czy pobierał obrazek to i tak mamy proces z obsługą PHP, a ten zajmuje kilka razy tyle co "czysty".

 

Ja również nie widzę większego sensu w połączeniu apache + nginx, skoro ten drugi radzi sobie bardzo dobrze nie tylko w plikach statycznych (niezbyt to brzmi, bo przecież wspomniane php i tak leci gdzieś indziej, np. php-fpm). Po co więc dokładać kolejną cegiełkę, zamiast wydzielić procesy php per user? PHP-FPM pozwala na dosyć wygodne separowanie userów, ale i balansowanie obciążenia - jak jeden zacznie wykładać swoje procesy, to wcale nie wyłoży to drugiego.

 

No chyba że liczy się też w jakiś sposób wygoda, np. dajemy userom ich własne .htaccessy zamiast ręcznie zmieniać pliki konfiguracyjne.

Edytowano przez lukasamd (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×