Назад | Перейти на главную страницу

Nginx против Apache как обратный прокси, какой выбрать

Возможно, здесь задавали такой вопрос, но я не нашел ни одного, действительно соответствующего моему вопросу. Слышал, что производительность nginx впечатляет, но у Apache есть больше документов, сообщество (читай: эксперт), чтобы получить помощь

Теперь я хочу знать, как оба веб-сервера сравниваются с точки зрения производительности, простоты настройки, уровня настройки и т. Д. КАК ОБРАТНЫЙ ПРОКСИ сервер в среде vps ??

Я все еще балансирую между ними для веб-приложения ruby ​​(не ROR), обслуживаемого тонким (одним из веб-сервера ruby).
Будем очень признательны за конкретный ответ. Общий ответ: не касаться рубиновой части - это нормально. Я все еще новичок в администрировании веб-серверов.

Я хотел добавить это в комментарий, так как согласен с наиболее важным моментом ответа webdestroyas, но он получился слишком длинным.

Вы находитесь в среде VPS, это означает, что у вас, скорее всего, будет мало оперативной памяти. Только по этой причине вам понадобится Nginx, поскольку его объем памяти меньше, чем у Apache.

Также я не согласен с некоторыми из приведенных аргументов.

Легкость настройки:
Nginx не сложнее Apache. Это другое. Если вы привыкли к Apache, то изменение всегда будет сложнее, это не означает, что сам стиль конфигурации сложнее. Я полностью перешел с Apache на Nginx более года назад, и сегодня мне было бы сложно настроить сервер Apache, тогда как я считаю Nginx чрезвычайно простым в настройке.

Для Ruby:
У Nginx есть Passenger, однако я обычно считаю его второстепенным методом подключения к Ruby. Я не программист на Ruby, поэтому я не могу это проверить, но часто вижу, что Unicorn и Thin упоминаются как лучшие альтернативы.

В заключение:
Nginx был создан как обратный прокси. Первоначально все, что он делал, это обслуживал статические файлы и обратный прокси-сервер на внутренний сервер через HTTP / 1.0. С тех пор были добавлены fastcgi, балансировка нагрузки и различные другие функции, но первоначальной целью его разработки было обслуживание статических файлов и обратного прокси. И это действительно хорошо.

Apache, напротив, является веб-сервером общего назначения. Я не сомневаюсь, что он может отлично выполнять обратный прокси, но он не был разработан для минимального использования памяти и, как следствие, требует больше ресурсов, чем Nginx, что означает, что в игру вступает мой первоначальный аргумент в отношении среды VPS.

Производительность:
NGinX. Этот сервер известен как один из самых эффективных веб-серверов и используется многими различными компаниями (Notable, MediaTemple).

Легкость настройки:
Apache. Конфигурация Apache действительно проста и действительно мощна. Nginx мощен, но его очень сложно понять, поскольку он больше похож на язык программирования, чем на файл конфигурации.

Уровень настройки:
Apache. Для Apache написано множество модов и других плагинов. Хотя для Nginx все еще есть плагины, я думаю, что у Apache их намного больше, чем у Nginx.

Для Ruby:
Я знаю, что Nginx можно использовать как мощный балансировщик нагрузки с Mongrel / webrick. Однако в Apache есть Phusion / Passenger, что делает интеграцию более приятной.

Победитель обратного прокси:
NGinX

Nginx основан на событиях, а apache - на процессах. При высокой нагрузке все меняется ... Apache должен разветвлять или запускать новый поток для каждого соединения, а nginx - нет. Эта разница проявляется в основном в использовании памяти, но также во времени ответа пользователя и других показателях производительности. Nginx может обрабатывать десятки тысяч одновременный HTTP-соединения с поддержкой активности на современном оборудовании. Apache будет использовать 1-2 МБ стека для каждого подключения, поэтому, выполнив математические вычисления, вы увидите, что вы можете обрабатывать только несколько сотен или, может быть, тысячу подключений одновременно, без начала обмена.

Мы используем nginx перед Apache и IIS в нашей среде в качестве прокси-сервера для балансировки нагрузки и кэширования, и мы очень счастливы. Мы используем два небольших бокса nginx вместо пары очень дорогих арендованных устройств F5, и наши сайты намного быстрее как по ощущениям, так и по измеренному времени отклика.

Около двух недель назад я был в той же дилемме, что и Вы.

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

AFAIK nginx не имеет файлов htaccess, поэтому вам нужно найти свой путь, если это зависит от этой функции.

AFAIK все необходимое работает, и я видел учебные пособия.

Я выберу nginx с настройкой тестирования и профилирования. У меня типичное приложение LAMP.

Я читал, что есть люди, которые реверсируют прокси и обслуживают статические файлы из nginx, а все остальное, например PHP, передают работающему экземпляру Apache. Они утверждают, что это хороший компромисс. У меня нет данных об этом, но вы, возможно, захотите знать.

За последние пару лет у меня были серьезные проблемы с Apache mod_proxy на разных платформах в разных средах. Время от времени он просто перестает работать, и кажется, что единственное лекарство - перезапуск сервера Apache.

Лично я спрашиваю не «nginx vs Apache», а «nginx vs lighttpd» - и это гораздо более сложный вопрос!