Недостатки использования nginx в качестве основного веб-сервера?

12

Я видел миллионы сайтов, использующих nginx как проксирующий веб-сервер, работающий вместе с Apache. Но я видел очень мало серверов, использующих nginx только в качестве веб-сервера по умолчанию. Каковы основные недостатки такого конфига?

Я вижу некоторые:

  • Невозможность использовать файлы конфигурации для каждого каталога, такие как .htaccess, поэтому каждое изменение конфигурации должно быть сделано для основного файла конфигурации сервера и требует перезагрузки сервера. Но pecl htscanner может их компенсировать настройками php
  • Недоступность mod_php для nginx, который может быть компенсирован, например, php-fpm.

Какие другие? Почему люди просто не оставляют Apache и не переходят на nginx или любое другое легкое решение? Может быть, есть какие-то особые причины?

РЕДАКТИРОВАТЬ: этот вопрос в первую очередь о работе со стеком LAMP.

Владислав Раструсный
источник
1
Разум, инерция, инвестиции. Как всегда.
Игнасио Васкес-Абрамс
Какие инвестиции потребовались для установки nginx на новом сервере? Это бесплатное программное обеспечение с открытым исходным кодом.
Владислав Раструсный
3
Трата
Если мы говорим о количестве, ИМХО самая главная причина - огромное количество хостов, использующих Apache. Настроить nginx как общую службу (например, в cPanel, Plesk и т. Д.) Еще не так просто, как сделать это с Apache, особенно для конечных пользователей. И я знаю много выделенных серверов, которые работают на одном сайте и все же используют cPanel / Plesk / и т. Д. Только из-за простоты, знакомства и низкой стоимости установки.
Халил Озгюр

Ответы:

9

По моему опыту #nginx, это почти всегда из-за знакомства с файлами Apache .htaccess и нежелания терять его или иным образом в зависимости от него. Например, люди, работающие на хостинге с общим сервером, которые хотят выгружать только статические файлы и держать Apache для своих пользователей.

И я, честно говоря, не могу придумать никаких других причин для проксирования к Apache, кроме хранения .htaccess для конечных пользователей.

Изменить: На самом деле mod_php плюс phpsuexec для общих хостов может быть еще одной причиной придерживаться Apache.

Мартин Фьордвальд
источник
Из моего опыта довольно сложно добиться хорошей производительности от tomcat через nginx, так как ajp-работник apache2 заметно быстрее работает под высоким давлением. Я знаю, что у nginx есть экспериментальная реализация ajp13, но она не стабильна и плохо документирована.
Пауска
1
Это очень возможно. Nginx лучше всего работает как обратный прокси-сервер fastcgi или HTTP 1.0. Я знаю, что существуют сторонние модули для общения с scgi, wsgi и т. Д., Но я не могу сказать, насколько они стабильны или даже насколько они быстры.
Мартин Фьордвальд,
Кстати, mod_php не работает с suexec. Suexec для приложений cgi.
Владислав Раструсный
Ну вот и все, никаких реальных причин. Слишком долго был пользователем nginx, чтобы даже больше помнить Apache. : D
Мартин Фьордвальд
6

Если у вас есть группа людей, которые могут заставить Apache работать хорошо, зачем беспокоиться о переучивании всего нового приложения и конфигурации, перенастройке правил mod_rewrite, повторении конфигураций mod_perl / php / etc, повторном тестировании, повторном развертывании?

Оба программного стека могут быть бесплатными, но «переподготовка, переработка, повторное тестирование» - это не так, и пришло время добавить функции, которые интересуют ваших пользователей 1 , вместо того, чтобы возиться с ними , чтобы переделать что-то новое .

+1 Я явно не говорю о личных проектах, нет.

Rodger
источник
2

Мне нравится Nginx, но две вещи мешают мне использовать его для моих веб-сайтов.

  • Сложно настроить PHP-FPM . Мне пока не удалось сделать это с последней версией PHP.

  • Nginx не поддерживает веб-сокеты HTML5, в которых я заинтересован.

Jonas
источник
1
Можете ли вы назвать трудности, которые вы испытали с nginx и php-fpm? Что касается HTML5 WebSockets, похоже, что у Apache их еще нет: questions.apache.org/bugzilla/show_bug.cgi?id=47485
Владислав Раструсский
Я также хотел бы знать о проблемах с php-fpm. Если вы можете скомпилировать PHP из исходного кода без него, то очень просто сделать это с ним.
Мартин Фьордвальд
1
В ветке 5.3 она уже есть, поэтому просто ./configure --enable-fpm и все готово.
Владислав Раструсный