Установка и настройка nginx на windows

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

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

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

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

C:\nginx-1.25.2>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.25.2\.
Пути в конфигурационном файле должны задаваться в 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 не поддерживается.

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

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

Как установить и запустить сервер Nginx на Windows 10

Nginx — это веб-сервер, который очень популярен в Linux и BSD системах. Многие полагают, что установить Nginx на Windows 10 невозможно. Это совсем не так.

Согласно информации, размещенной на сайте Nginx, установка на Windows 10 возможна, но есть несколько ограничений производительности, которые пока не были устранены. К ним относятся только одно рабочее веб-приложение, отсутствие масштабируемости и возможные проблемы с UDP аутентификацией. На данный момент Nginx уже упоминал, что он решит все проблемы в своих будущих выпусках.

Чтобы успешно установить и запустить Nginx на Windows 10, выполните следующие действия.

Загрузите Nginx Server

Существует много загружаемых версий Nginx для Windows, но Nginx рекомендует использовать “mainline version”. Однако, вы не найдете никаких проблем, если загрузите последнюю стабильную версию этой программы.

Выберите последний ZIP-файл и загрузите его в новую папку.

Как установить и запустить сервер Nginx на Windows 10 1

В качестве первого шага необходимо распаковать его. Вы можете использовать 7-Zip, WinRAR или любое другое популярное программное обеспечение для архивации.

Как установить и запустить сервер Nginx на Windows 10 2

После извлечения содержимого архива из первоначальной директории необходимо переместить папку, которая поставлялась со встроенной загрузочной копией. в «Program Files».

Как установить и запустить сервер Nginx на Windows 10 3

Мы запустим Nginx из этого места в качестве веб-сервиса по умолчанию.

Как установить и запустить сервер Nginx на Windows 10 4

Чтобы установить и запустить Nginx, выберите и дважды щелкните файл Nginx.exe.

Как установить и запустить сервер Nginx на Windows 10 5

На следующем шаге вам нужно проверить, была ли установка успешной. Для этого вы можете перейти в браузер по умолчанию и ввести “localhost”. Если вы увидите следующее окно с сообщением об успешной установке и работе веб-сервера Nginx, то проблем с установкой в Windows 10 не было.

Как установить и запустить сервер Nginx на Windows 10 6

Чтобы остановить Nginx, вы можете завершить его из окна Диспетчер задач.

Как установить и запустить сервер Nginx на Windows 10 7

Запуск Nginx на компьютере с ОС Windows

Для запуска Nginx, вы должны использовать Internet Information Services (IIS), который является веб-сервером Microsoft, обслуживающим запрошенные HTML страницы или файлы. Вы можете включить его в меню Turn Windows Features On or Off в Панели управления. Проверьте необходимые поля для Web Management Tools и IIS Management Console.

Как установить и запустить сервер Nginx на Windows 10 8

Для включения IIS на вашем компьютере потребуется некоторое время.

Как установить и запустить сервер Nginx на Windows 10 9

Менеджер IIS Manager можно открыть непосредственно из меню Пуск. Здесь вы сможете получить доступ к веб-сайту по умолчанию, который обычно расположен по адресу “inetpub wwwroot”. Он также известен как корень веб-приложения.

Полезно изменить физический путь этого корня в более подходящую папку. Я создал новую папку “Work” в C:\ и изменил физический путь на “C:\Work”.

Как установить и запустить сервер Nginx на Windows 10 10

После этого перейдите в папку Nginx, которую переименовали в файлах программы. Нажмите “Conf” и выберите “nginx.conf”. Этот файл можно редактировать с помощью текстового редактора Notepad++.

Как установить и запустить сервер Nginx на Windows 10 11

В Notepad++ измените корень на отредактированный физический путь, о котором мы говорили выше.

Как установить и запустить сервер Nginx на Windows 10 12

Вы можете отредактировать файл index.html в корневой папке на отдельной вкладке. Измените текст на то, что вы хотите, чтобы веб-сервер отображался на экране.

Как установить и запустить сервер Nginx на Windows 10 13

Теперь снова запустите программу Nginx.exe и введите “localhost” в окне браузера. Веб-сервер Nginx выделит сделанные вами изменения.

Как установить и запустить сервер Nginx на Windows 10 14

На сайте ресурсов Nginx представлен полный список веб-приложений, которые можно использовать для запуска на Windows PC.

Вывод

Nginx является одной из ведущих компаний по разработке веб-серверов, которая, как ожидается, затмит Apache в будущем. Кроме того, он быстрее, может справляться с большим количеством параллельных задач и надежен. Подводя итог, можно сказать, что если у вас есть простой сайт, который вы хотите подключить к Nginx, вы можете сделать это прямо сейчас без каких-либо проблем.


Спасибо, что читаете! На данный момент большинство моих заметок, статей и подборок выходит в telegram канале «Левашов». Обязательно подписывайтесь, чтобы не пропустить новости мира ИТ, полезные инструкции и нужные сервисы.


Респект за пост! Спасибо за работу!

Хотите больше постов в блоге? Подборок софта и сервисов, а также обзоры на гаджеты? Сейчас, чтобы писать регулярно и радовать вас большими обзорами, мне требуется помощь. Чтобы поддерживать сайт на регулярной основе, вы можете оформить подписку на российском сервисе Boosty. Или воспользоваться ЮMoney (бывшие Яндекс Деньги) для разовой поддержки:


Заранее спасибо! Все собранные средства будут пущены на развитие сайта. Поддержка проекта является подарком владельцу сайта.

  1. Скачиваем отсюда https://nginx.org/ru/download.html и распаковываем куда-нибудь.

  2. Дальше читаем тут https://nginx.org/ru/docs/windows.html
    ВНИМАНИЕ: команду start nginx обязательно даем прямо из каталога, в котором лежит nginx.exe, в противном случае при дальнейшей работе будут ошибки (все пути в конфигурации прописаны как относительные, только поменяв их все, можно запускать откуда угодно).
    Вообще рекомендуется держать консоль открытой в этом каталоге до самого конца выполнения инструкций, однако для работы nginx это необязательно — если её закрыть, он продолжит работать.

  3. Открываем http://localhost/ — должно заработать.

Установка PHP

  1. Скачиваем с https://windows.php.net/download (ZIP-архив Non Thread Safe x64), замечаем номер в «VC(число)» — понадобится на следующем шаге.
    Прописываем каталог в PATH.

  2. Открываем командную строку, запускаем php -v.
    Должно выскочить окно с надписью «The program can’t start because VCRUNTIME140.dll».
    Если запуск прошел без ошибок, пропускаем следующий пункт.

  3. Ищем на странице загрузки из п.1 в левой колонке ссылку на VC нужного номера. Скачиваем x64.exe, устанавливаем.
    После этого возвращаемся на предыдущий пункт. На этот раз команда должна показать версию php.

Конфигурация локального сайта в nginx

  1. Выбираем локальное имя хоста (как localhost, только какое-то другое, например, mysite) и каталог, где будут находиться его файлы (например, D:\sites\mysite).

  2. В конец файла (каталог nginx)/nginx.conf перед последней закрывающей скобкой добавляем раздел:

    server {
        listen       80;
        server_name  mysite;
        root D:\sites\mysite;
    }
    
  3. В консоли, находясь в каталоге nginx.exe, даем команду nginx -s reload, чтобы nginx перечитал конфигурацию.

  4. Открываем файл C:\Windows\System32\Drivers\etc\hosts, добавляем строчку

    127.0.0.1	mysite
    

    Файл защищен системой ото всех пользователей, кроме администратора, поэтому перед записью понадобится открыть его свойства и дать там нужные права и потом вернуть, как было.

  5. Открываем в браузере ссылку http://mysite/ (обязательно с http://, иначе браузер станет отправлять в поисковые системы). Должна отобразиться страница 404 от nginx.

Налаживание взаимодействия nginx и PHP

  1. В раздел server конфигурации добавляем такие строки:

    location ~\.php$ {
        fastcgi_pass 127.0.0.1:9123;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    (9123 — номер порта, можно выбрать какой-нибудь другой)

    Из консоли даем команду nginx -s reload.

  2. В консоли переходим в каталог, куда распакован PHP. Даем команду

    php-cgi.exe -b 127.0.0.1:9123
    

    Закрывать окно консоли нельзя, иначе интерпретатор PHP перестанет работать.

    Можно прописать путь к каталогу PHP в системной переменной PATH и запускать его без указания полного пути.

  3. Создаем файл D:\sites\mysite\test.php со следующим содержимым:

    <?php echo "This is PHP script on mysite";
    

    Открываем http://mysite/test.php — текст должен отображаться.

Взаимодействие налажено!

См. также https://www.nginx.com/resources/wiki/start/topics/examples/phpfastcgionwindows/

PHP: ini-файл и модули расширений

Вышеуказанные процедуры позволяют успешно запустить и использовать PHP, однако он будет «голым» — без расширений (в т.ч. таких необходимых, как mysqli, mbstring и др.) и без настроек, т.к. он не прочитает ни одного ini-файла.

PHP может автоматически загрузить файл php.ini из нескольких каталогов. Первое место, где он станет его искать — рядом с php.exe. В пакете есть файл php.ini-development. Нужно создать рядом его копию с именем php.ini, открыть и внести следующие изменения:

  1. Раскомментировать строку extension_dir = "ext" — в результате PHP станет искать модули расширений в подкаталоге ext рядом с php.exe
    (относительный путь интерпретируется именно от exe-, а не от самого ini-файла)

    Проверяем, подключился ли файл, с помощью команды php --ini. Результат должен быть примерно следующим:

    Configuration File (php.ini) Path: C:\Windows
    Loaded Configuration File:         {каталог с дистрибутивом PHP}\php.ini
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
    

    Вторая строчка говорит о том, что ini-файл успешно загрузился.

    На первую строчку (про С:\Windows) внимания обращать не следует, т.к. ini-файла по указанном адресу нет.

  2. Найти нужные расширения и раскомментировать строки, где они подключаются. Например, extension=mysqli и т.д.

    Все расширения перечислены рядом, и найти нужные среди них несложно. Рекомендуется включить следующие:

    • curl
    • fileinfo
    • gd
    • mbstring
    • exif
    • mysqli
    • soap

    Просмотреть список подключенных расширений можно, дав команду php -m. Непустой изначально список после вышеописанной манипуляции пополнится.

PHP загружает расширения при запуске exe-файла интерпретатора. Если нужно подключить новое, следует остановить php-cgi.exe (или php.exe соответственно) и запустить его заново.

PHP и MySQL

Чтобы установить связь между PHP и MySQL, не требуется никаких специальных действий, кроме собственно создания соединения (разумеется, должен быть включен соответствующий модуль, например, mysqli).

Проверить соединение можно так:

echo "Connecting to MySQL server... ";

// $host = 'localhost'; // если соединяемся через named pipe (аналог Unix-сокета),
$host = ".";            // то в качестве хоста указываем "."
$user = "someone";
$password = "a password";
$mysqli = new mysqli($host, $user, $password);

if ($mysqli->connect_error)
	echo $mysqli->connect_error;
else
	echo "Connected successfully!";

Об установке и минимальной настройке MySQL под Windows см. здесь.

Неудобства работы под Windows

  • в путях файловой системы используется обратный слэш (\), а не прямой (/) — типа D:\sites\mysite\... вместо /sites/mysite/..., что влияет, в частности, на содержимое констант __DIR__ и __FILE__;
    как следствие, весь код, рассчитанный на разбор пути по слэшу, перестаёт работать

  • невозможно установить русскую локаль с UTF-8: setlocale(LC_ALL, 'rus') всегда приводит к использованию windows-1251, и изменить это никак не получается

Из данного HOWTO Вы узнаете как установить и настроить связку nginx + php (в режиме FastCGI) + СУБД MySQL для работы под операционной Microsoft Windows.

Мы подробно рассмотрим вопросы установки, базовой и расширенной настройки, а также безопасности.

В статье приводятся примеры скриптов запуска и остановки, а также примеры файлов конфигурации nginx и php.

Подробности смотрите под катом.

Шаг 1. Подготовка к установке

Для начала рекомендуем в корне системного диска создать каталог nginx (например, c:\nginx\), а в нём подкаталоги public_html, php и mysql. Лучше всего связка работает, когда все основные компоненты находятся в одном каталоге. В каталог php мы будем устанавливать интерпретатор PHP5, в mysql соответственно данную СУБД, а в public_html — файлы главного сайта.

Разместив все компоненты таким образом, Вы сделаете пакет перемещаемым (Portable) и готовым к работе с любого компьютера.

Шаг 2. Загрузка необходимых компонентов

Нам потребуются следующие компоненты:

  1. PHP — http://windows.php.net/download/. Вам необходимо скачать версию с инсталлятором (*.msi) в варианте Thread Safe;
  2. MySQL — http://dev.mysql.com/downloads/mysql/. Также скачайте версию с msi-инсталлятором;
  3. nginx — http://nginx.org/ru/download.html. Скачайте последнюю версию;
  4. RunHiddenConsole — http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip.

Шаг 3. Установка компонентов

По окончании скачивания приступайте к установке компонентов согласно данному алгоритму:

  1. распакуйте архив с nginx в созданный на шаге 1 каталог в корне (например, c:\nginx\). Далее в данном HOWTO будет использоваться именно этот каталог, поэтому если Вы изменили путь, сделайте соответствующие правки;
  2. установите PHP в каталог c:\nginx\php\:
    1. на этапе выбора типа установки (Web Server Setup) обязательно выберите вариант «Other CGI«, иначе модули, необходимые для работы PHP в режиме FastCGI не будут установлены;
      PHP - Web Server Setup
      PHP — Web Server Setup
    2. на этапе выбора необходимых модулей (Choose Items to Install) обязательно выберите MySQL, MySQLi и OpenSSL (если хотите далее настроить SSL). Также рекомендуется выбрать модули, необходимые для большинства CMS: bzip2, Curl, Exif, GD2, Gettext, XML. Если Вы забыли что-то нужное и оно Вам потребуется, Вы всегда сможете доустановить/удалить эти компоненты, снова запустив программу установки PHP и выбрав пункт Change.
      PHP - выбор компонентов
      PHP — выбор компонентов
  3. установите СУБД MySQL в каталог c:\nginx\mysql\. Здесь нет ничего сложного. В мастере конфигурации выберите стандартную конфигурацию и обязательно задайте пароль администратора (пароль встроенной учётной записи суперпользователя root);
  4. распакуйте архив RunHiddenConsole.zip в каталог c:\nginx\.

Шаг 4. Создание скриптов запуска и остановки

Для быстрого запуска набора Вам потребуется создать в каталоге c:\nginx\ 3 файла: start.cmd, shutdown.cmd и restart.cmd, предназначенные соответственно для запуска, остановки и перезапуска серверов.

Листинг файла start.cmd (запуск сервера):

@echo off
echo Starting servers...
set PHP_FCGI_MAX_REQUESTS=0
set SRVPATH=C:\nginx
net start MySQL
start /D%SRVPATH% nginx.exe
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini

Листинг файла shutdown.cmd (остановка сервера):

@echo off
echo Shutting down servers...
taskkill /IM nginx.exe /F
taskkill /IM php-cgi.exe /F
net stop MySQL

Листинг файла restart.cmd (перезапуск сервера):

@echo off
echo Shutting down servers...
taskkill /IM nginx.exe /F
taskkill /IM php-cgi.exe /F
net stop MySQL
echo Starting servers...
set PHP_FCGI_MAX_REQUESTS=0
set SRVPATH=C:\nginx
net start MySQL
start /D%SRVPATH% nginx.exe
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini

Если Вы изменили путь со стандартного C:\nginx\, на что-то другое, внесите соответствующие правки в скрипты.

Если требуется запускать сервер nginx+php+mysql при загрузке системы, то добавьте задание на автозапуск скрипта start.cmd с помощью оснастки Назначенные задания Windows.

Откройте файл c:\nginx\conf\nginx.conf в любом текстовом редакторе (я рекомендую Notepad++).

1. Измените строку:

worker_processes  1;

Здесь вместо 1 укажите количество рабочих процессов nginx. Рекомендуется указывать число, равное количеству ядер процессора.

2. Уберите символ комментария (решётку) у строки:

error_log  logs/error.log;

Это позволит включить запись логов ошибок в файл error.log, который Вы всегда найдёте в каталоге c:\nginx\logs\.

3. Измените значение директивы server{} для nginx без использования SSL:

server {
 listen 80 default;
 server_name localhost;

 server_tokens off;

 #charset koi8-r;

 #access_log logs/access.log  main;

 location / {
 root c:/nginx/public_html;
 index index.html index.htm index.php;
 }

 location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }

 location ~ /\.ht {
 deny all;
 }

 #error_page 404 /404.html;

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root html;
 }
}

Если Вы хотите использовать SSL, Вам потребуется совсем иной конфиг:

server {
 listen 443 default;
 server_name localhost;

 server_tokens off;

 ssl on;
 ssl_certificate C:/nginx/private/ssl_cert_domain.pem;
 ssl_certificate_key C:/nginx/private/ssl_cert_domain.key;

 ssl_session_timeout 5m;

 ssl_protocols SSLv2 SSLv3 TLSv1;
 ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
 ssl_prefer_server_ciphers on;

 #charset koi8-r;

 #access_log logs/access.log  main;

 location / {
 root c:/nginx/public_html;
 index index.html index.htm index.php;
 }

 location ~ \.php$ {
 fastcgi_pass 127.0.0.1:9000;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 fastcgi_param HTTPS on;
 }

 #error_page 404 /404.html;

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root html;
 }

 location ~ /\.ht {
 deny all;
 }
}

Здесь C:/nginx/private/ssl_cert_domain.pem — файл сертификата SSL, а C:/nginx/private/ssl_cert_domain.key — закрытый ключ для него. Внимание! При старте сервера у Вас запросят пароль для расшифровки закрытого ключа, поэтому чтобы не вводить его постоянно, во время создания (получения) сертификата оставьте поле ввода пароля пустым (это конечно небезопасно, но экономит время во время запуска сервера). В новых версиях возможно появится функция указания пароля в конфиге (как у Apache).

Вы можете включить ведение логов доступа (access.log), убрав символ комментария у строки #access_log  logs/access.log  main;.

Вы также можете переопределить страницы ошибок 404, 500, 502, 503, 504 и 403 путём указания в директиве error_page кода ошибки и имени файла, который будет отображаться при её возникновении.

Шаг 6. Настройка php и безопасность

Откройте текстовый файл C:\nginx\php\php.ini в любом текстовом редакторе. Из соображений безопасности рекомендуем изменить строку

safe_mode = Off

на

safe_mode = On

Также найдите в файле строку

disable_functions =

и замените её на следующую:

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source

Эти действия включат безопасный режим для PHP (Safe Mode), при котором запрещены большинство небезопасных функций и исполнение файлов, а также отключит ряд потенциально уязвимых функций. Внимание! Если Ваша CMS не работает при включённом режиме PHP Safe Mode, отключите его, либо поставьте правильную CMS ;-).

Если Вы являетесь разработчиком и хотите видеть ошибки и сообщения PHP, то найдите строку

display_errors = Off

и замените её на

display_errors = On

Для исправления опасной уязвимости в PHP, позволяющей выполнять PHP-код из загружаемых файлов, найдите в php.ini строку

;cgi.fix_pathinfo=1

уберите символ комментария (;) около неё и замените на следующую:

cgi.fix_pathinfo = 0

Дальнейшие настройки файла изменять не требуется — всё уже настроено оптимально для большинства применений программой установки PHP.

Шаг 7. Обработка нескольких PHP-файлов одновременно

К сожалению, PHP в Windows не умеет создавать копии своих экземпляров, поэтому придётся заранее запускать несколько копий и описать их использование в конфиге nginx.

В файле start.cmd пропишите запуск php-cgi.exe на разные номера портов:

%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9000 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9001 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9002 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9003 -c %SRVPATH%/php/php.ini
%SRVPATH%\RunHiddenConsole.exe %SRVPATH%\php\php-cgi.exe -b 127.0.0.1:9004 -c %SRVPATH%/php/php.ini

Запустите столько процессов, сколько вам потребуется (обычно достаточно 5-20). В нашем примере используется 5 экземпляров с номерами портов 9000 — 9004.

Откройте файл nginx.conf в текстовом редакторе и перед директивой server {} пропишите следующие строки:

upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}

Теперь откройте файл fastcgi_params и в самом начале пропишите следующее:

fastcgi_connect_timeout 1;
fastcgi_next_upstream timeout;
fastcgi_pass backend;

Обязательно уберите fastcgi_pass 127.0.0.1:9000; во всех директивах location.

Пример готового конфига nginx.conf:

worker_processes 4;

error_log logs/error.log;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}
server {
listen 80 default;
server_name localhost;
server_tokens off;
location / {
root C:/nginx/public_html;
index index.html index.htm index.php;
location ~ \.php$ {
include fastcgi_params;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ /\.ht {
deny all;
}
}
}

Пример конфига, использующего SSL:

worker_processes 4;

error_log logs/error.log;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
upstream backend {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
server 127.0.0.1:9003;
server 127.0.0.1:9004;
}
server {
listen 443 default;
server_name localhost;
server_tokens off;
ssl on;
ssl_certificate C:/nginx/private/ssl_cert_domain.pem;
ssl_certificate_key C:/nginx/private/ssl_cert_domain.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
root C:/nginx/public_html;
index index.html index.htm index.php;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param HTTPS on;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ /\.ht {
deny all;
}
}
}

Пример файла fastcgi_params:

fastcgi_connect_timeout 1;
fastcgi_next_upstream timeout;
fastcgi_pass backend;

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;
fastcgi_index  index.php;

Шаг 8. Тестирование и заключение

Запустите серверы и создайте в каталоге C:\nginx\public_html\ файл test.php со следующим содержанием:

<?php
phpinfo();
?>

Откройте этот файл в браузере по адресу http://localhost/test.php и если Вы увидели информацию об установленном сервере, значит всё работает корректно и Вы можете приступать к использованию сервера.

Шаг 9. Готовые примеры файлов конфигурации

По многочисленным просьбам мы решили выложить примеры всех файлов конфигурации nginx в Git-репозитории. В данный момент доступно три разных готовых конфига:

  • nginx_simple.conf — простейший конфиг для запуска одного сайта без поддержки SSL;
  • nginx_ssl.conf — конфиг для запуска одного сайта с поддержкой SSL;
  • nginx_vhosts.conf — специально настроенный конфиг с относительными путями, поддержкой SSL, виртуальных хостов (позволяет держать несколько сайтов на одном сервере) и отдельных логов.

Там же вы найдете готовые скрипты запуска и остановки сервера, а также файл конфигурации PHP.

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

  1. Go to the Nginx download page.
  2. Under the “Mainline version”, click on the zip file link for the latest Windows version. The file will start downloading.Installing Nginx on Windows
    Downloading Nginx for Windows

Step 2: Extracting Nginx

  1. Once downloaded, locate the zip file, typically in your Downloads folder.
  2. Extract the zip file to your desired location. For this guide, we will use C:\nginx.Installing Nginx on Windows
    Extracted Nginx code in C:\nginx directory

Step 3: Running Nginx

  1. 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”.
  2. Navigate to the directory where you extracted Nginx. You can do this by typing cd C:\nginx and hitting Enter.
  3. Start Nginx by typing start nginx and hitting Enter.
    cd C:\nginx 
    start nginx.exe  
    

    How to Install Nginx on Windows

    Starting Nginx service on Windows
  4. 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.How to Install Nginx on Windows
    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.

  • Установка и настройка операционной системы windows 10
  • Установка виртуалки на windows 10
  • Установка и настройка dude на windows
  • Установка и настройка wsus на windows server 2019
  • Установка и настройка docker на windows 10