Nginx с Виндой и ... (или установка Nginx под Windows в качестве сервиса)

nginx (англ. engine x) (по-русски произносится как э́нджин-э́кс) — веб-сервер и почтовый прокси-сервер, работающий на Unix-подобных операционных системах (тестировалась сборка и работа на FreeBSD, OpenBSD, Linux, Solaris, Mac OS X, AIX). Начиная с версии 0.7.52 появилась бинарная сборка под Microsoft Windows и она, как оказалось, работает!

Разрабатывается Игорем Сысоевым с 2002-го года для компании Rambler и постоянно модернизируется. Осенью 2004 года вышел первый публично доступный релиз.

Сейчас доступна версия под Windows nginx 1.1.10, её и будем ставить и настраивать.

1. Итак, проблема

ДЛЯ ОСТРЫХ: Сразу оговорюсь, исключить из схемы Windows в данной ситуации невозможно, поскольку сервер работает с Win-API.

Случилось так, что встала необходимость отдавать маленький текстовый файлик (~2 байта) с наименьшей задержкой. На сервере уже стоял HTTPd, который обрабатывал запросы от других серверов. И отдавать файлик у него получалось очень медленно (>500 ms), то ли из-за перегруженности сервера, то ли из-за внутренней архитектуры, что нас не устроило - поэтому решили копать в сторону nginx.

2. Установка

Установить проще простого. Скачал и распаковал в нужную директорию. Запустил nginx.exe - сразу запустился мастер процесс, который форкает нужное количество деток.

Останавливается всё командой:

nginx.exe -s stop


Это всё конечно отлично, но как заставить работать данное чудо как сервис, как apache или IIS? Это позволит автоматически запускать NGINX при старте, также позволит легко стартовать, стопать, перезапускать сервис, итд итп.

Казалось бы, всё легко, скачал inststv/servany или FireDaemon или другие, и пользуйся себе?

Есть много HowTo, описывающих процесс настройки и установки как сервис через эти программы, но не советую спешить, поскольку при старте Master-процесса НГИНКС плодит дочерние процессы, которые при рестарте или выключении сервиса не убиваются, что крайне неудобно.

3. Установка Nginx как Service в Windows (ПРАВИЛЬНЫЙ ПУТЬ)

Сразу оговорюсь, и передам привет основателю проекта под названием “Windows Service Wrapper”, без которого всё это волшебство было бы невозможно.
Итак, первым делом скачиваем последнюю версию программы отсюда. Для работы данной программы необходимо, чтобы на сервере была установлена .NET Framework 2.0.5. Качаем под свою систему с Microsoft.com. Дальше выполняем по пунктам:

1) Качаем последнюю версию программы и располагаем её в корне с распакованным NGINX, у меня это c:\nginx.
2) Переименовываем программу по своему вкусу, я назвал nginx_svc.exe.
3) Дальше нам необходимо сказать "WinSw" что мы хотим сделать. Для этого нам нужно создать там же XML конфиг, в котором необходимо указать команду для выключения NGINX и путь к выполняемому файлу.

Создадим файл nginx_svc.xml со следующим содержанием:

 nginx nginx nginx c:\nginx\nginx.exe c:\nginx\ roll  -p c:\nginx -p c:\nginx -s stop


Само собой, вы должны указать свои пути, до исполняемого файла и рабочую директорию.

Наконец, мы устанавливаем nginx как сервис. при помощи одной команды:

c:\nginx\nginx_svc.exe install //указываем полный путь


Вот и всё.




Вас также может заинтересовать:

Уязвимость в nginx — nginx security advisory (CVE-2013-4547)
Установка windows 7 / windows server 2008 по сети (PXE BOOT)
Nginx + CentOS 5.5 + aio
Nginx и Websockets
Релиз nginx 1.0.0
Nginx нашёл инвесторов на $3 млн.