nginx
nginx (engine x, произносится как э́нджин-э́кс, engine — движок, X — ещё один) — свободный веб-сервер. В своё время был написан отечественным программистом Игорем Сысоевым для компании Rambler, но поддерживается и развивается до сих пор. Часто именуется «лучшим веб-сервером всех времен и народов». Является конкурентом веб-сервера Apache.
Стоит сразу отметить, что nginx не является веб-приложением или языком программирования, подобно PHP. nginx — это веб-сервер, его задача принимать запросы от клиентов, передавать их веб-приложению (например, PHP), получать ответ от веб-приложения и отдавать его пользователю. Необходимость в таком промежуточном звене возникает из-за сложности разбора запросов, посылаемых клиентами, и ради минимизации накладных расходов, возникающих при увеличении числа клиентов. Кроме того, вынесение куска функциональности в отдельную программу соответствует принципу модульности, эксплуатируемому в UNIX-системах.
[править] Преимущества и недостатки nginx
Преимущества nginx:
- шифрование, сжатие, поддержка многих сайтов на одном IP-адресе и прочие возможности, доступные в большинстве веб-серверов;
- межсистемность, малый размер, простота конфигурации, масштабируемость;
- использование преимущества от асинхронной системы ввода-вывода, что на практике означает экономию ресурсов системы и выгодно сказывается в случае больших нагрузок
- встроенная устойчивость к многим видам DoS и DDos атак.
Недостатки nginx:
- встроенная поддержка PHP. Лечится подключением PHP через fastcgi. Неплохо работает решение php-fpm;
- нет встроенной поддержки технологии Web-сокет, хотя при желании Web-сокет можно использовать (можно поставить перед nginx ещё один front-end, поддерживающий Web-сокет или использовать расширение udp_proxy для nginx);
- появился позже Apache, из-за чего не признается многими олдфагами.
В Apache по умолчанию тратится по одному процессу (или потоку выполнения) операционной системы на каждый запрос. Или же заранее запускается некоторое количество процессов-рабочих, обрабатывающих запросы. Число запросов, по которым одновременно отдается или принимается информация, ограничено количеством этих рабочих. Так как каждый рабочий тратит ресурсы системы, их число обычно невелико.
Асинхронный ввод-вывод позволяет nginx экономить на этих запросах, в которых происходит передача информации. 10 000 клиентов, скачивающих файл на очень медленной скорости не страшны для nginx, но способны повергнуть в ужас Apache. Соответственно, nginx идеально подходит для отдачи статического контента. Конечно, для Apache есть решения, позволяющие справляться с большим числом одновременных запросов, но их ещё надо прикручивать, а в nginx это есть изначально.
Так или иначе, но nginx используется на значительном количестве веб-серверов по всему миру. Нередко можно встретить конфигацию nginx+Apache, когда nginx используется в качестве сервера-балансировщика, обратно проксирующего запросы на один или несколько Apache-серверов. nginx при этом имеет дело с дикой стихией запросов из внешнего мира, а Apache уже обрабатывает сами запросы.
[править] Ссылки
- http://nginx.org/ — официальный сайт
- http://wiki.nginx.org/ — официальная вики
Nginx относится к теме «Программное обеспечение» |