На самом деле - да, серверы разные и не совсем взаимозаменяемые (оба хороши ).
nginx - лёгкий веб-сервер. Если Вы планируете раздавать исключительно статику, то делать это при помощи nginx - отличное решение.
Всё зависит от конкретных задач. У Apache очень много
модулей на разные случаи жизни, но он весьма требователен к ресурсам
машины. И смысл от этой навороченной функциональности, сами понимаете,
будет только в том случае, если она будет востребована в конкретной
ситуации.
Между тем, как уже сказал vanjouke, очень эффективно они работают в связке Apache+nginx. Первый обрабатывает динамические запросы, а второй раздаёт статику.
Надо сказать, что и nginx уже очень многое умеет. Но об этом лучше расскажут специалисты.
Описано более-менее, но есть еще один момент из-за которого в
большинстве случаев их используют вместе, не только для разделения
статики и динамики.
Apache действительно более реусрсоемкий, и он не отпускает занятые
ресурсы (не убивает процесс) пока не отдаст все что должен
пользователю. Бывает такое что у пользователя коннект медленный, да и
вообще часто бывает так что сервер генерит ответ гораздо быстрее чем
отдает (и все время пока отдает занимает ресурсы, которые ему уже не
особо нужны, т.к. ответ он уже сгенерил). Вот для того чтобы избежать
этого эффекта ставят связку apache + nginx: внешние запросы приходят к
nginx'у, он передает их апачу и возвращает ответ, фишка в том что как
только apache отдал ответ на запрос nginx'у апачевский процесс (или
тред, я не помню как там организованно) умирает, а клиенту уже данные
возвращает nginx, который значительно легче.
Цитата:
Сообщение от Unlock
Насколько nginx полноценная замена Apache
Не на 100% в полном смысле, но в тех задачах которые нужны среднестатистическому сайту на все 500%
Только надо прочитать документацию и разобраться, и всё будет хорошо.
Цитата:
Сообщение от Lifemaster
nginx - для раздачи статики, если на сайте одна динамика, то имхо в связке nginx+apache смысла нет.
очень даже есть (описывал выше зачем ставят именно связку
apache+nginx, когда все внешние запросы идут к апачу через nginx). Вы
никогда не замечали на довольно крупных сайтах (если не ошибаюсь и sape
и habr, и shop-script, и многие другие сайты рунета) иногда такую
nginx'овую белую страничку типа Error 504 (показывается когда nginx не
может получить ответа от апача) ? У них все страницы, и динамика, и
статика отдаются через nginx'овую прослойку, и поверьте, это не просто
так сделано.
Цитата:
Сообщение от kxk
mnn, В принципе имея прямые руки можно и к nginx дописать поддержку .htaccess.
Для шареда хороши связки Apache+nginx.
А для нагруженный проектов nginx+fcgi
Нельзя. Тогда nginx перестанет быть nginx'ом.
Boris A Dolgov добавил 21.01.2009 в 20:54
Цитата:
Сообщение от timur-kar
очень
даже есть (описывал выше зачем ставят именно связку apache+nginx, когда
все внешние запросы идут к апачу через nginx). Вы никогда не замечали
на довольно крупных сайтах (если не ошибаюсь и sape и habr, и
shop-script, и многие другие сайты рунета) иногда такую nginx'овую
белую страничку типа Error 504 (показывается когда nginx не может
получить ответа от апача) ? У них все страницы, и динамика, и статика
отдаются через nginx'овую прослойку, и поверьте, это не просто так
сделано.
Такая страничка бывает и при ошибке проксирования не только на апач, но и на fastcgi-сервер.
__________________
С уважением, Борис Долгов.
Администрирование, дешевые лицензии ISPsystem, качественно переведеные DirectAdmin-скины MarinaRS и Capri - http://www.isplicense.ru.
Вообще, если есть руки и желание копаться в конфигурации - nginx для
Вас. Можно сделать практически все, что есть в apache (кроме, пожалуй,
каких-то экзотических модулей).
Но для массовового шареда всю его прелесть оценить не получится.
А статику проксировать на Апач может быть надо для логгирования в одном
месте (как вариант - подсчета трафика) (хотя у nginx логи построены
намного умнее, чем у апача, либо для авторизации через realm). Но это
опять же на общем хостинге, где у юзера нет возможности влиять на
конфиг. На высоконагруженных проектах отдавать статику через апач -
бред.
Boris A Dolgov добавил 21.01.2009 в 20:59
Цитата:
Сообщение от kxk
Boris A Dolgov, Сырцы открыты бери и пиши что хочешь Нельзя по идеалогическим, но можно по практическим соображениям
Нельзя и по практическим соображениям. Конфигурация компилируется
в момент запуска, а не в момент выполнения запроса. При выполнении
запроса не дергается куча файлов и stat()'ов.
ПО мотивам ветки поставил себе nginx..
до этого стоял апач, мод_пхп, еасселератор
первое впечатление от нгникс - не очень... как-то быстро откомпилился
когда поставил fastcgi - чуть-чуть погруснел.. призводительность упала ужас, по сравнению с мод_пхп...
еще раз погрустнел, когда начал переписывать .хтекесс ... оказывается в
nginx нельзя написать регулярку, типа /[0-9]{4}/ а ее надо заменить
/[0-9][0-9][0-9][0-9]/ ...
все- таки, осилив себя, приложил, и таки переписал все реврайт рулы
... все сайты поднялись после дня работы от начала установки (пишлось перекомпилить пхп со всеми экстеншенами)
скорость отработки скриптов снизилась
поставил eaccelerator - время генерации скриптов вернулась на прежний
уровень. но результат отдается с мизерной задержкой, по сравнению
мод_пхп
помимо этого, значительно быстрее стал уходить осталной контент: картинки, сиэсэсы, яваскрипты и тп.
и удалось освободить достаточно много памяти. если раньше нужнобыло
тратить ~ 200 мб, то теперь все работает на 65. разницу с удавольствием
пущу на индексы в Mysql
итог - больше доволен , чем не доволен. страницы визуально грузятся
быстрее (за счет быстрой отдачи картинок , стилей, яваскриптов).
освободилось достаточно памяти. но есть свои приколы в реврайтах, часть
функциональности потеряна. скрипты отдаются медленне, но совсем
незначительно
Ответ: Apache vs nginx
php как fastcgi он для экономии памяти, а не для ускорения
Ну, собственно говоря, это естественно - php-процессор все тот же, ускорить по сравнению с mod_php он врядли сможет заметно.
Единственный вопрос - про рерайты, у меня такие работают. Какую ошибку писал nginx?
yandex# /usr/local/etc/rc.d/nginx restart
Performing sanity check on nginx configuration:
2009/01/26 19:37:24 [emerg] 47089#0: directive "rewrite" is not terminated by ";" in /usr/local/etc/nginx/зкзкзкзкз.rules:9
2009/01/26 19:37:24 [emerg] 47089#0: the configuration file /usr/local/etc/nginx/nginx.conf test failed
У меня тут масса вопросов появилась.
Сам пользую Apache+Lighhttpd.
Но изначально не верно реализовал програмную часть, и вся статика заварачивается изначально Апачем по средствам .htaccess.
В свою очередь, получил, что в любом случае изначально запрос получает Апач.
Да lighhttpd разгрузил конечно, но ожидаемого эффекта не достиг.
lighhttpd - настроен на отдельном ip, статику отдает через поддомен.
Так, что если есть большие нагрузки, учтите, и так не делайте.
Nicola добавил 22.01.2009 в 01:03
Цитата:
Сообщение от Unlock
Не
знаю, может по lighttpd отдельну тему завести? Его можно использовать
как альтернативу апач или нет? Какие с lighttpd основные проблемы или
хитрости?
Думаю, уместнее понять, что нужно реализовать.
Далее уже от этого исходить, что нужно для реализации.
lighttpd - решает свои вопросы, Apache - решает другие.
lighttpd - в базе, отдает статику, Вы на него скрипты (ПХП) не повесите. Да им очень удобно отдавать текст, картинки etc ...
+ к lighttpd такой, что конфиг реально написать руками за минуту. Очень просто в базовой версии по использованию.
Nicola добавил 22.01.2009 в 01:06
Цитата:
Сообщение от iamliss
Зачем в связке использовать два веб сервера да ещё и на одном серваке??? маразм полнейший, первый раз такое слышу.
Если небольшая нагрузка апача хватит за глаза. Если есть большая
нагрузка и апач не справляется или подтормаживает - тогда более лёгкие
веб сервера + fcgi. Я выбрал не nginx, а lighttpd - ещё легче и проще.
Пробовал и то и другое и ещё много всего.
Какой маразм ?
Вот закой мне к lighttpd модули писать, чтоб он мне PHP юзал ? По
банальной полиике безопастности использовать чужие это не серьезно.
Писать самому ? Время дорого.
Ещё хуже взять модуль, который не будет работать и сидеть кавырять чужой код.
Зачем ? Если можно использовать уже давно всеми изученные связки ?
Последний раз редактировалось Nicola, 22.01.2009 в 02:06.
Причина: Добавлено сообщение
Ответ: Re: Apache vs nginx
Цитата:
Сообщение от Nicola
Nicola добавил 22.01.2009 в 01:03
lighttpd - в базе, отдает статику, Вы на него скрипты (ПХП) не повесите. Да им очень удобно отдавать текст, картинки etc ...
+ к lighttpd такой, что конфиг реально написать руками за минуту. Очень просто в базовой версии по использованию.
Nicola добавил 22.01.2009 в 01:06
Какой маразм ?
Вот закой мне к lighttpd модули писать, чтоб он мне PHP юзал ? По
банальной полиике безопастности использовать чужие это не серьезно.
Писать самому ? Время дорого.
Ещё хуже взять модуль, который не будет работать и сидеть кавырять чужой код.
Зачем ? Если можно использовать уже давно всеми изученные связки ?
Вы плохо разобрались. Никакие модули для юзания пхп писать не
надо. Пхп подключается через fastcgi отлично, это делается в конфиге 10
строчками типа таких
У лайти больше опций - одна поддержка .htaccess чего стоит, соответственно меньше производительности.
Хотя кривыми настройками и nginx можно замедлить до лайти - не спорю...
нет у lighttpd поддержки .htaccess, разве, что вроде какой-то 3rd
party модуль был, сами разработчики на форуме писали - хотите терять в
производительности из-за тупого считывания .htaccess при каждом
реквесте - пользуйтесь им, а так с редиректами через конфиг все летает.