nginx под Windows

Разделы

Известные проблемы
Возможные усовершенствования в будущем

Версия nginx под Windows использует “родной” Win32 API (не эмуляцию Cygwin). В настоящий момент в качестве метода обработки соединений используется только select(), поэтому не стоит ожидать высокой производительности и масштабируемости. В силу этого и ряда других известных проблем версия nginx под Windows рассматривается пока как бета-версия. На данный момент в ней доступна практически вся функциональность, что и в версии nginx под UNIX, за исключением XSLT-фильтра, фильтра изображений, модуля GeoIP и встроенного языка Perl.

Чтобы установить nginx/Windows, скачайте дистрибутив последней основной версии (1.7.0), поскольку основная ветвь nginx содержит все известные исправления. Затем распакуйте дистрибутив, перейдите в каталог nginx-1.7.0 и запустите nginx. Вот пример для корневого каталога на диске C:

cd c:\
unzip nginx-1.7.0.zip
cd nginx-1.7.0
start nginx

Чтобы увидеть процессы nginx, запустите утилиту командной строки tasklist:

C:\nginx-1.7.0>tasklist /fi "imagename eq nginx.exe"

Image Name           PID Session Name     Session#    Mem Usage
=============== ======== ============== ========== ============
nginx.exe            652 Console                 0      2 780 K
nginx.exe           1332 Console                 0      3 112 K

Один из процессов основной, другой — рабочий. Если nginx не запускается, нужно искать причину в в файле лога ошибок logs\error.log. Если же лог-файл не создался, то причину этого следует искать в Windows Event Log. Если вместо ожидаемой страницы выводится страница с ошибкой, нужно также искать причины ошибки в файле logs\error.log.

nginx/Windows использует каталог, в котором он был запущен, в качестве префикса для относительных путей в конфигурации. В вышеприведённом примере префиксом является C:\nginx-1.7.0\. Пути в конфигурационном файле должны задаваться в UNIX-стиле с использованием прямых слэшей:

access_log   logs/site.log;
root         C:/web/html;

nginx/Windows работает как стандартное консольное приложение (не сервис) и управляется при помощи следующих команд:

nginx -s stop быстрое завершение
nginx -s quit плавное завершение
nginx -s reload изменение конфигурации, запуск новых рабочих процессов с новой конфигурацией, плавное завершение старых рабочих процессов
nginx -s reopen переоткрытие лог-файлов

Известные проблемы

  • Хоть и возможен запуск нескольких рабочих процессов, только один из них реально работает.
  • Рабочий процесс может обслуживать не более 1024 одновременных соединений.
  • Кэш и другие модули, требующие поддержки разделяемой памяти, не работают под Windows Vista и более поздними версиями в связи с тем, что на этих версиях Windows включена рандомизация адресного пространства.

Возможные усовершенствования в будущем

  • Запуск в виде сервиса.
  • Использование портов завершения ввода-вывода (I/O completion ports) в качестве метода обработки соединений.
  • Использование нескольких рабочих нитей внутри одного рабочего процесса.
    Поддержать сайт на родительском проекте КГБ