Подтвердить что ты не робот

Зачем использовать nginx с Catalyst/Plack/Starman?

Я пытаюсь развернуть мое небольшое веб-приложение Catalyst с помощью Plack/Starman. Вся документация, кажется, предполагает, что я хочу использовать это в сочетании с nginx. В чем преимущества этого? Почему бы не использовать Starman прямо на порту 80?

4b9b3361

Ответ 1

В частности, он не должен быть nginx, но вы хотите, чтобы какой-то интерфейс сервера на вашем сервере приложений использовался по нескольким причинам:

  • Чтобы вы могли запускать сервер Catalyst на высоком порту, как обычный пользователь, при запуске внешнего сервера на порту 80.

  • Чтобы обслуживать статические файлы (обычные ресурсы, такие как изображения, JS и CSS, а также любые загрузки, которые вы, возможно, захотите использовать X-Sendfile или X-Accel-Redirect с), не связывая процесс perl на время загрузки.

  • Это упрощает работу, если вы хотите перейти к более сложной конфигурации, включающей, например, Edge Side Включает или имеет вебсервер, обслуживающий непосредственно из memcached или mogilefs (обе вещи, которые может выполнять nginx) или конфигурацию балансировки нагрузки /HA.

Ответ 2

Я задал этот вопрос на #plack и получил следующий ответ от @nothingmuch (я добавил форматирование):

С nginx вы можете настроить loadbalancing/failover type stuff. Если сайт небольшой/простой, он может быть излишество.

Я не знаю ни одного недостатки, которые может иметь Starman. Возможно, если у вас много хитов статические файлы nginx будут использовать меньше cpu/memory для их обработки, но это вряд ли будет значительным в типичное веб-приложение. Большие загрузки могут связать работников Starman для статического файла загрузок. (Возможно, нет, с sendfile.) Это обо всем, что я могу думать о.

... Настройка отказоустойчивости может быть хорошим, если вы хотите сделать обновления без простоя. ( "Сбой" старого версия.)

Ответ 3

Другая причина заключается в том, что легкий сервер интерфейса (даже Apache в порядке) потребляет гораздо меньше памяти на соединение, чем обычный процесс Starman (пара MB или десятки или более 100 МБ). Поскольку соединение открыто в течение некоторого времени, особенно если вы хотите использовать соединения keep-alive, вы можете поддерживать большое количество одновременных подключений с гораздо меньшей оперативной памятью. Только убедитесь, что размер буфера на прокси-сервере с интерфейсом достаточно велик, чтобы сразу загрузить типичный HTTP-ответ из бэкэнд. Затем бэкэнд может обрабатывать следующий запрос.