Версия nginx под Windows использует “родной” Win32 API (не эмуляцию Cygwin).
В настоящий момент в качестве методов обработки соединений используются
select()
и poll()
(1.15.9),
поэтому не стоит ожидать высокой производительности и масштабируемости.
В силу этого и ряда других известных проблем версия nginx под Windows
рассматривается пока как бета-версия.
На данный момент в ней доступна практически вся функциональность, что и
в версии nginx под UNIX, за исключением
XSLT-фильтра, фильтра изображений, модуля GeoIP и встроенного языка Perl.
Чтобы установить nginx/Windows, скачайте
дистрибутив последней основной версии (1.27.5),
поскольку основная ветвь nginx содержит все известные исправления.
Затем распакуйте дистрибутив, перейдите в каталог
nginx-1.27.5
и запустите nginx
.
Вот пример для корневого каталога на диске C:
cd c:\ unzip nginx-1.27.5.zip cd nginx-1.27.5 start nginx
Чтобы увидеть процессы nginx, запустите утилиту командной строки
tasklist
:
C:\nginx-1.27.5>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.27.5\
.
Пути в конфигурационном файле должны задаваться в UNIX-стиле с использованием
прямых слэшей:
access_log logs/site.log; root C:/web/html;
nginx/Windows работает как стандартное консольное приложение (не сервис)
и управляется при помощи следующих команд:
nginx -s stop быстрое завершение nginx -s quit плавное завершение nginx -s reload изменение конфигурации,
запуск новых рабочих процессов с новой конфигурацией,
плавное завершение старых рабочих процессовnginx -s reopen переоткрытие лог-файлов
Известные проблемы
-
Хоть и возможен запуск нескольких рабочих процессов, только один из них
реально работает. - UDP (и, как следствие, QUIC) не поддерживается.
Возможные усовершенствования в будущем
- Запуск в виде сервиса.
-
Использование портов завершения ввода-вывода (I/O completion ports)
в качестве метода обработки соединений. - Использование нескольких рабочих нитей внутри одного рабочего процесса.
Nginx — веб-сервер с открытым исходным кодом, разработанный Игорем Сысоевым в 2004 году. Nginx стал очень популярным, потому что он быстр, универсален и может использоваться в качестве веб-сервера и обратного прокси-сервера.
Одной из ключевых целей разработки Nginx является обеспечение высокой производительности и обработка большого количества одновременных подключений с минимальным использованием ресурсов. Nginx достигает этого за счет использования архитектуры, управляемой событиями, которая позволяет ему эффективно управлять подключениями без необходимости в большом количестве выделенных рабочих процессов. Кроме всего прочего, Nginx служит отличным выбором для отображения статического контента, а также изображений и других медиафайлов.
Nginx поддерживает широкий спектр протоколов, включая HTTP, HTTPS, WebSocket и другие. Такая гибкость позволяет использовать данный веб-сервер в самых разных приложениях, от обслуживания традиционного веб-контента до управления взаимодействием в режиме реального времени между клиентами и серверами.
В данном руководстве рассмотрим процесс установки и запуска веб-сервера Nginx на VDS, работающем под управлением Windows Server 2016.
Для установки Nginx перейдите на страницу загрузок и выберите либо актуальную стабильную, либо актуальную основную версию веб-сервера.
После окончания загрузки распакуйте архив, например, в каталог C:\nginx
. Затем откройте командную строку и перейдите в этот каталог.
cd C:\nginx
Далее, запустите Nginx при помощи следующей команды:
start nginx
Чтобы проверить работоспособность веб-сервера, откройте браузер и перейдите на страницу http://localhost
. При этом вы должны будете увидеть стартовую страницу Nginx. Если это так, значит, ваш веб-сервер работает.
Запуск Nginx как службы
По умолчанию, веб-сервер Nginx не функционирует в операционной системе как служба. Это означает, что при перезагрузке вашего VPS веб-сервер не запустится автоматически. Для запуска Nginx как службы необходимо будет воспользоваться сторонним ресурсом NSSM (Non-Sucking Service Manager).
Дистрибутив NSSM доступен по ссылке на странице загрузки.
Загруженный архив распакуйте, например, в каталог nssm
на диске C:\
виртуального сервера. После чего откройте командную строку и перейдите в каталог, в котором расположен файл nssm.exe
:
cd C:\nssm\win64
Затем установите Nginx в качестве сервиса при помощи следующей команды:
nssm install nginx C:\nginx\nginx.exe
После чего запустите установленный сервис:
nssm start nginx
Подключение к веб-серверу удалённо
Если вам нужно, чтобы веб-страница, запущенная с помощью Nginx открывалась не только с локального хоста, но и с любого другого узла, имеющего доступ в интернет, необходимо на виртуальном сервере добавить соответствующее правило в брандмауэр Windows. Для того, чтобы войти в настройки брандмауэра, в строке поиска наберите firewall
и запустите Windows Firewall with Advanced Security
.
В открывшемся окне брандмауэра перейдите в Inbound Rules
, затем кликните в New Rule...
После чего укажите тип создаваемого правила Program
и нажмите Next
.
Далее, в строке This program path
при помощи кнопки Browse
выберите файл nginx.exe
, после чего нажмите Next
.
В следующем окне укажите Allow the connection
и нажмите Next
.
Затем снова нажмите Next
перед этим отметив галочками все опции.
В строке Name
укажите имя создаваемого правила. В нашем примере мы назвали его Nginx web-server
. И для того, чтобы закончить настройку, нажмите Finish
.
После этого созданное правило появится в списке брандмауэра Windows.
Теперь вы сможете открыть вашу веб-страницу с любого компьютера, который имеет выход в интернет. Для этого достаточно набрать в браузере IP-адрес вашего VPS.
Nginx is an open-source, high-performance HTTP server and reverse proxy server. It also functions as a mail proxy server and a generic TCP/UDP proxy server. Renowned for its stability, rich feature set, simple configuration, and low resource consumption, Nginx is often used as a web server or reverse proxy.
This article provides a comprehensive guide on how to install Nginx on a Windows-based operating system. It is worth noting that while Nginx does provide a Windows version, it is mostly recommended for development and testing purposes. For production environments, Linux distributions are typically preferred.
Prerequisites
Before you start with the installation process, make sure you have administrative rights on your Windows system, as they are required for software installation. Additionally, ensure your system meets the minimum hardware requirements for Nginx.
Step 1: Downloading Nginx
- Go to the Nginx download page.
- Under the “Mainline version”, click on the zip file link for the latest Windows version. The file will start downloading.
Downloading Nginx for Windows
Step 2: Extracting Nginx
- Once downloaded, locate the zip file, typically in your Downloads folder.
- Extract the zip file to your desired location. For this guide, we will use C:\nginx.
Extracted Nginx code in C:\nginx directory
Step 3: Running Nginx
- Open the Command Prompt with administrative privileges. You can do this by searching for ‘cmd’ in the Start menu, right-clicking on Command Prompt, and selecting “Run as administrator”.
- Navigate to the directory where you extracted Nginx. You can do this by typing cd C:\nginx and hitting Enter.
- Start Nginx by typing start nginx and hitting Enter.
cd C:\nginx
start nginx.exe
Starting Nginx service on Windows - Nginx should now be running on your Windows machine. You can check this by opening a web browser and navigating to http://localhost. If Nginx has started successfully, you will see a welcome page.
Verify Nginx on Windows
Step 4: Managing Nginx
Here are some basic commands you can use to manage Nginx:
- To stop Nginx, use the command `nginx -s stop`.
- To quit Nginx gracefully, use `nginx -s quit`.
- To reload the Nginx configuration file, use `nginx -s reload`.
- To reopen the Nginx log files, use `nginx -s reopen`.
Remember to run these commands from the directory where Nginx is installed.
Step 5: Configuring Nginx
The primary configuration file for Nginx is nginx.conf, located in the conf subdirectory of the directory where Nginx was extracted. The configuration file is well-commented and provides a good starting point for configuring your server.
For Nginx to serve your website, you need to edit this file with your specific parameters. You may need to set up server blocks (similar to Apache’s virtual hosts) to specify the document root and other parameters for your website.
After making changes to the configuration file, remember to reload Nginx so that the changes take effect.
Conclusion
This guide provided a basic introduction to installing Nginx on a Windows system. While this should get you started, Nginx’s true power comes from its extensive configurability, allowing you to optimize it for your specific needs. Be sure to check out the official Nginx documentation for more detailed information on how to harness this power.
Table of Contents
Download Nginx and NSSM
Nginx is an free, open-source HTTP server characterized by its small footprint, exceptional performance and efficient use of resources. It hosts over 7% of all domains worldwide!
Non-Sucking Service Manager (NSSM) is a service helper program that assists in installing an application as a service, monitoring the application’s state and handling failures as it runs.
1. To run Nginx as a Windows Service you need download:
- Nginx for Windows: http://nginx.org/en/download.html
- Download NSSM: https://nssm.cc/download
2. Extract downloaded files then copy nssm.exe in win64 folder and src folder to extracted nginx folder.
3. Now, in the nginx folder, we have nginx source and nssm source.
4. Copy all files and folders in nginx folder to C:/nginx ( create nginx folder in C drive if it not exists).
5. Right click on the Start icon then open Windows PowerShell as administrator.
6. Navigate to nginx folder then run this command .\nssm.exe install to open NSSM service installer.
PS C:\Users\mpnadmin> cd /
PS C:\> cd .\nginx\
PS C:\nginx> .\nssm.exe install
Service "Nginx" installed successfully!
7. In the NSSM service installer window:
- Application Path: Browse to nginx.exe in C:\nginx.
- Service name: Enter service name as you need.
- Click button.
8. Now, open Windows Services (services.msc) then start the Nginx service. As you can see, Startup Type is Automatic, it means nginx service will load on boot.
Finally, open any web browser then visit localhost to verify it works.
Есть нужен веб-сервер для Windows, идеально подойдет веб-сервер Nginx с подключенным PHP через FastCGI. В статье будет показана настройка и связка Nginx с PHP на примере Windows 11. Аналогично происходит настройка в Windows 7/8/10.
1. Структура каталогов под сервера
Удобно когда все сервера и сервисы установлены в отдельной папке. Я рекомендую сделать структуру аналогично моей.
Создаем на диске D:\ папку server (если диск один, то создаем на C). В папке server будет находится все что относится в веб-серверу, базы данных, файлы сайта.
Структура будет выглядеть так:
# Папка для серверов
D:\server\
# Папка для nginx
D:\server\nginx\
# Папка для PHP
D:\server\php\
# Папка для веб-сайтов
D:\server\www\
Создаем необходимые папки.
Подобная архитектура удобна тем, что все сервера находятся на отдельном диске в отдельной папке. Можно без проблем сделать резервное копирование, обновление серверов и так далее.
2. Установка и настройка nginx
2.1. Установка nginx
Заходим на официальный сайт Nginx https://nginx.org/ru/download.html и скачиваем последнею версию
Стабильная версия больше подойдет если nginx используется для рабочих веб-сайтов, а не используется для разработки, тестирования новых возможностей nginx.
Извлекаем скаченный архив в папку D:\server\nginx\
2.2. Конфигурация nginx (nginx.conf)
Теперь необходимо настроить сам nginx и его работу в связке с PHP.
Открываем файл конфигурации nginx.conf (в моем случае D:\server\nginx\conf\nginx.conf) и настраиваем веб-сервер nginx
# Базовый файл конфигурации nginx + PHP FastCGI
#user nobody;
worker_processes 1; # Количество запущенных процессов
#Лог ошибок
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; # Количество подключений к одному процессу
}
http {
include mime.types;
default_type application/octet-stream;
# Лог доступа
access_log off;
#access_log logs/access.log main;
gzip on; # Использовать сжатие
# Разделов server может быть неограниченное количество
#
# Раздел server для домена сайта localhost по 80 порту
server {
listen 80; # Порт
server_name localhost; # Домен сайта
charset utf-8; # Кодировка сайта
error_log logs/localhost.error.log; # Лог ошибок сайта
access_log logs/localhost.access.log; # Лог доступа сайта
# Путь до папки сайта
root D:/server/www;
# Обработка всех URI запросов начинающихся с /
location / {
#root D:/server/www; # root определена в разделе server
index index.html index.php; # файлы в качестве индекса
}
# Настройка обработки php скриптов через PHP-FastCGI
#
# Обработка всех URI запросов оканчивающихся на .php
location ~ \.php$ {
# IP и порт PHP-FastCGI. С такими же параметрами нужно будет запускать php-cgi.exe
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# Путь до php скриптов, $document_root - путь из параметра root (папка сайта)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Сохраняем и закрываем файл.
3. Установка и настройка PHP
3.1. Установка PHP
Заходим на сайт PHP https://windows.php.net/download и скачиваем последнею Non Thread Safe версию
Если в Windows не установлены Visual C++ Redistributable для Visual Studio 2015-2019, их необходимо скачать (vc_redist.x64.exe и vc_redist.x86.exe) и установить.
Извлекаем скаченный архив в папку D:\server\php\
3.2. Конфигурация PHP (php.ini)
По умолчанию в PHP содержатся два примера конфигурации php.ini-production и php.ini-development. Версия production используется для рабочих сайтов, в ней ошибки только записываются в лог файлы веб-сервера. Версия development используется при разработке, в ней ошибки выводятся на веб-страницу и записываются в лог файлы.
Копируем и переименовываем файл php.ini-production или php.ini-development в php.ini (это основной файл конфигурации PHP).
Открываем в тестовом редакторе файл php.ini (в моем случае D:\server\php\php.ini), находим параметр extension_dir и указываем папку с расширениями PHP
; Раскомментируем параметр для Windows (относительный путь)
extension_dir = "ext"
; Или можно указать полный путь до папки с расширениями
;extension_dir = "D:\server\php\ext"
Далее находим раздел Dynamic Extensions и включаем необходимые расширения
Сохраняем и закрываем файл.
4. Скрипты запуска и остановки веб-сервера
В папке D:\server\ будут находится скрипты для управления веб-сервером.
После запуска php-cgi.exe (PHP FastCGI), он будет работать в открытом окне консоли. Если это не желательно, скачиваем утилиту RunHiddenConsole.exe в папку D:\server\ и тогда дальнейший запуск php-cgi.exe будет происходить через данную утилиту.
Создаем скрипт запуску веб-сервера web-start.bat
:: Запуск PHP FastCGI
:: Если файл RunHiddenConsole.exe существует, то запускаем PHP через утилиту
if exist "RunHiddenConsole.exe" (
:: PHP будет запущен в скрытом режиме
RunHiddenConsole.exe "php\php-cgi.exe" -b 127.0.0.1:9000 -c "php\php.ini"
) else (
start php\php-cgi.exe -b 127.0.0.1:9000 -c "php\php.ini"
)
:: Запуск nginx
cd nginx
start nginx.exe
Создаем скрипт остановки веб-сервера web-stop.bat
taskkill /f /IM nginx.exe
taskkill /f /IM php-cgi.exe
Для удобства создаем скрипт перезапуска веб-сервера web-restart.bat
call web-stop.bat
call web-start.bat
В результате папка server выглядит следующим образом
5. Проверка веб-сервера nginx + PHP
Создаем в папке D:\server\www\ файл index.php следующего содержимого
<?php
phpinfo();
?>
Запускаем веб-сервер скриптом web-start.bat
Открываем в браузере http://localhost/ и если все нормально, будет выведена информация о PHP.
nginx в связке с PHP успешно установлены, настроены и работают.
Если что-то не работает, смотрим лог файлы nginx (D:\server\nginx\logs\) или запускаем PHP без скрытия консоли, чтобы увидеть ошибки в ней.