nginx (engine x, произносится как энджин-экс, engine — движок, X — ещё один) — это свободный веб-сервер. Он был написан программистом Игорем Сысоевым для компании Rambler, но поддерживается и развивается до сих пор. Является конкурентом веб-сервера Apache.
Внимание! nginx не является
веб-приложением или языком программирования, подобно
PHP и другим.
Задача nginx как
веб-сервера в том, чтобы принимать запросы от клиентов, передавать их
веб-приложению (например,
PHP), получать ответ от
веб-приложения и отдавать его пользователю.
Для эффективного управления памятью nginx использует пулы.
Пул — это последовательность предварительно выделенных блоков динамической памяти. Длина блока варьируется от 1 до 16 килобайт. Изначально под пул выделяется только один блок. Блок разделяется на занятую область и незанятую.
Преимущества и недостатки nginx
К преимуществам nginx можно отнести следующее:
- шифрование, сжатие, поддержка многосайтовости на IP-адресе;
- межсистемность, малый размер, простота конфигурации, масштабируемость;
- преимущества асинхронной системы ввода-вывода. Это экономия ресурсов системы при больших нагрузках.
К недостаткам nginx можно отнести:
- встроенная поддержка PHP. Лечится подключением PHP через fastcgi. Неплохо работает решение php-fpm;
- нет встроенной поддержки технологии Web-сокет
- появился позже Apache, и не всеми признается.
Асинхронный ввод-вывод позволяет nginx экономить на запросах передачи информации. 10 000 клиентов, скачивающих файл на очень медленной скорости не страшны для nginx, но способны повергнуть в ужас Apache. Соответственно, nginx идеально подходит для отдачи статического контента. Конечно, для Apache есть решения, позволяющие справляться с большим числом одновременных запросов, но их ещё надо прикручивать, а в nginx это есть изначально.
nginx используется на значительном количестве веб-серверов по всему миру. Нередко можно встретить конфигурацию nginx+Apache, когда nginx используется в качестве сервера-балансировщика, обратно проксирующего запросы на один или несколько Apache-серверов. nginx при этом имеет дело с дикой стихией запросов из внешнего мира, а Apache уже обрабатывает сами запросы.