Сегодня перед разработчиком сайта стоит очень серьезный вопрос, как уменьшить нагрузку на сервер и в то же время увеличить его посещаемость. Другими словами как выжать на одном железе наивысшую производительность.
В связи с ростом интернет пользователей перед администраторами серверов стала задача выжерания ресурсов на Веб-сервероах под управлением Apache. Для более эффективной и быстрой работы Web серверов без дополнительных затрат на дополнительное оборудование или же замена старого на более совершенной, встала задача по оптимизации программных ресурсов.
Так как большинство серверов уже работают под управлением Apache, в связи с большим количеством скриптов написанных под эти сервера, в помощь с данной ситуацией используеся связка nginx + Apache как front-end при которой в качестве front end выступает легкий Веб сервер nginx, а в качестве второстепенного сервера наш Apache.
Преимущества подобной схемы можно понять на небольшом примере. Представьте себе, что web серверу под управлением Apache необходимо обслужить около 1000 запросов одновременно, причем многие из этих клиентов подключены к медленным каналам связи. В случае использования apache мы получим 1000 процессов httpd на каждый из которых будет выделена оперативная память, и эта память не освободится до тех пор, пока клиент не получит запрошенный контент.
В случае схемы с применением front end/back end сервера получим значительную экономию системных ресурсов за счет того, что после того как пришел запрос клиента, nginx передает запрос apache и быстро получает ответ. В итоге apache после того как отдал ответ nginx освобождает память, далее с клиентом взаимодействует web сервер nginx, который как раз и написан для раздачи статического контента, большому количеству клиентов, при незначительном потреблении системных ресурсов.