nginx — маленький, але дуже потужний і ефективний веб-сервер

15 травня, 2008
1 Star2 Stars3 Stars4 Stars5 Stars (Покищо ніхто не оцінював)

Хотів би розповісти вам про один дуже корисний інструмент, який я використовую у своєї адміністраторській практиці. Цей інструмент — nginx, маленький і легкий, але дуже потужний і ефективний веб-сервер, створений Іґарєм Сісоєвим (Игор Сисоев) для використання на серверах компанії Rambler і люб’язно наданий у вільне користування спільноті.

Цей сервер може використовуватись, як самостійний http-сервер або ж, як reverse proxy перед веб-сервером apache, а також будь-яким іншим “важким” веб-сервером для зниження навантаження на backend-сервері при великій кількості одночасних http-сесій. Як самостійний сервер, nginx без проблем витримує величезні навантаження при роздачі статичного контенту (images, html-pages і так далі).


Основні можливості nginx
– обслуговування статичних запитів, індексних файлів, автоматичне створення переліків файлів;
– акселероване проксимування без кешування, простий розподіл навантаження і відмовостійкість;
– акселерована підтримка віддалених FastCGI серверів, простий розподіл навантаження і відмовостійкість;
– модульність, фільтри, у тому числі й стиснені (gzip), byte-ranges (довантаження), chunked відповіді, SSI-фільтр; кілька підзапитів на одній сторінці, що обробляються в SSI-фільтрі через проксі або FastCGI, виконується паралельно.
– підтримка SSL;

Додаткові можливості

– віртуальні сервери, що визначаються за ІР адресою або доменним ім’ям;
– підтримка keep-alive і pipelined з’єднань;
– гнучкість конфігурації на рівні Apache, налаштування таймаутів та розмірів буферів;
– зміна налаштувань і оновлення виконуваного файлу без перерви обслуговування клієнтів;
– налаштування форматів журналів, їхня швидка ротація;
– спеціальні сторінки для кодів 400-599;
– зміна URI за допомогою регулярних виразів;
– виконання різних функцій в залежності від адреси клієнта;
– обмеження доступу в залежності від адреси клієнта і за паролем (Basic авторизація);
– обмеження швидкості віддачі відповідей;

Основні архітектурні особливості nginx

– один головний процес і кілька робочих, які працюють під не привілегійованого користувача;
– підтримка kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select та poll;
– використання можливостей, наданих kqueue, як то как EV_CLEAR, EV_DISABLE (для тимчасового вимкнення подій), NOTE_LOWAT, EV_EOF, число доступних даних, коди помилок;
– підтримка sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+) і sendfilev (Solaris 8 7/01+);
– підтримка accept-фільтрів (FreeBSD 4.1+) і TCP_DEFER_ACCEPT (Linux 2.4+);
– на 10 000 неактивних keep-alive з’єднань використовується близько 2.5Мб пам’яті;
– мінімум операцій копіювання даних;

Кокретно у моїй роботі, я використовую nginx в якості основного веб-сервера при побудові безкоштовних веб-хостингів. Я розробив кілька специфічних модулів для додавання банерів і обрахунку статистики відвідування, і нині один з ниших основних серверів здатен витримувати навантаження у 150-200 Mbit/s дуже фрагментованого трафіку (усі файли маленькі). Як на мене, то це хороший результат, оскільки раніше на цьому ж залізі Apache навіть після усіх мислимих оптимізацій не міг обробляти більше 60-80Mbit/s.

Автор: Alexey Kovyrin

Зберегти:
  • email
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Twitter

Залишіть Коментар

Line and paragraph breaks automatic.
Дозволені XHTML теґи: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Why ask?

 


Get Adobe Flash playerPlugin by wpburn.com wordpress themes