nxweb – быстрый и легкий веб-сервер для приложений, написанных на C и Python

Обоснование

Производительность многих веб-приложений можно значительно повысить за счет небольших и быстрых компонент, написанных на языке C.

Наиболее эффективный способ реализации таких компонент – разработка модулей для основного веб-сервера (nginx, Apache), однако API этих серверов трудно назвать дружественными. В идеале хотелось бы иметь нечто вроде Java-servlet контейнера, только для C.

Перед тем как создать nxweb, я изучил множество легких / встраиваемых веб-серверов (mongoose, microhttpd, libevent, G-WAN), но каждый из них имел свои недостатки (подробнее см. примечания к бенчмаркам здесь).

Что предлагает nxweb:

  • высокая (если не лучшая) производительность (см. бенчмарки)
  • способность обслуживать тысячи одновременных соединений
  • малый объем занимаемой памяти
  • гибридная модель: обработка событий + рабочие потоки
  • небольшой размер
  • простой API
  • неплохая поддержка HTTP-протокола
  • keep-alive соединения
  • chunked encoding как для запросов, так и для ответов
  • поддержка SSL (с помощью GNUTLS)
  • HTTP прокси (пул соединений с поддержкой keep-alive)
  • кеширование ответов в файлах как для бекенда, так и для пользовательских модулей
  • при недоступности бекенда сервер может отгружать закешированный контент
  • неблокирующий sendfile
  • автоматическое gzip-сжатие с кешированием результата
  • создание кешируемых картинок-миниатюр с водяными знаками (с помощью ImageMagick)
  • базовая поддержка SSI (Server Side Includes)
  • сборка HTML из шаблонов (с наследованием)
  • подзапросы
  • встроенный интерпретатор Python (WSGI-сервер)
  • модульная архитектура
  • возможность запуска в фоновом режиме
  • открытый исходный код

Ограничения

Работает только под Linux.

Документация и API

См. статьи на этом сайте + исходный код. hello.c – пример пользовательского модуля.

Сборка

  1. Скачать tar-архив здесь
  2. Выполнить шаги из файла INSTALL

Ошибки

О замеченных ошибках просьба сообщать на трекер или в группы поддержки.

Обсуждение и объявления

nxweb-ru – группа поддержки на русском языке

nxweb – группа поддержки на английском языке

 

Блог nxweb

Последние статьи

Tags

Подписка: RSS