Nginx conf настройка windows

Есть нужен веб-сервер для 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.org. Доступны для скачки основная и стабильная версия nginx.

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

Извлекаем скаченный архив в папку D:\server\nginx\

Открыта папке "D:\server\nginx\" в Windows 11. Внутри папке веб-сервер 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 версию

Раздел "Downloads" веб-сайта windows.php.net. Доступные версии PHP для скачивания.

Если в Windows не установлены Visual C++ Redistributable для Visual Studio 2015-2019, их необходимо скачать (vc_redist.x64.exe и vc_redist.x86.exe) и установить.

Извлекаем скаченный архив в папку D:\server\php\

Открыта папке "D:\server\php\" в Windows 11. Внутри папке находятся файлы 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 и включаем необходимые расширения

В блокноте Windows 11 открыт файл "php.ini". Отображается раздел "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 выглядит следующим образом

Открыта папке "D:\server\" в Windows 11. Внутри папке находятся папки nginx, php, www и bat-файлы для управления веб-сервером.

5. Проверка веб-сервера nginx + PHP

Создаем в папке D:\server\www\ файл index.php следующего содержимого

<?php
	phpinfo();
?>

Запускаем веб-сервер скриптом web-start.bat

Открываем в браузере http://localhost/ и если все нормально, будет выведена информация о PHP.

Открыта в браузере ссылка http://localhost/. На странице успешно выведено phpinfo. PHP версии 8.3.3 работает в Windows 11.

nginx в связке с PHP успешно установлены, настроены и работают.

Если что-то не работает, смотрим лог файлы nginx (D:\server\nginx\logs\) или запускаем PHP без скрытия консоли, чтобы увидеть ошибки в ней.

Из данного 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.

#13
 понедельник, 3 июля 2023 г.

 9 минут(ы)
 756 слов

Установка Nginx на Windows

  • Перейдите на официальный сайт Nginx https://nginx.org/ и перейдите на страницу загрузки https://nginx.org/en/download.html. Загрузите последнюю стабильную версию Nginx для Windows в формате zip.

  • Распакуйте загруженный архив Nginx в каталог на вашем компьютере, например, C:\nginx.

  • Откройте файл nginx.conf, который находится в папке conf в распакованном каталоге Nginx. Внесите необходимые изменения в конфигурацию, например, настройте прослушиваемый порт и корневую директорию вашего веб-сервера.

Откройте командную строку (Command Prompt) от имени администратора и перейдите в каталог, где расположен Nginx (например, C:\nginx). Запустите Nginx, введя следующую команду:

  • Откройте веб-браузер и введите http://localhost/ в адресной строке. Если Nginx работает должным образом, вы должны увидеть страницу приветствия Nginx.

Для остановки Nginx можно использовать команду nginx.exe -s stop или закрыть командную строку, в которой был запущен сервер.

Брандмауэр Windows

Если при первом запуске Nginx на Windows появляется запрос на разрешение доступа по сети, это может быть вызвано настройками брандмауэра Windows. Брандмауэр может обнаружить новое приложение и запросить разрешение на доступ к сети.

Nginx и Брандмауэр Windows

Для разрешения доступа Nginx к сети, следуйте этим шагам:

  • При появлении запроса на разрешение доступа по сети, нажмите на кнопку «Разрешить доступ» или «Разрешить доступ для общественных сетей» (в зависимости от предлагаемых вариантов).

  • Если запрос на разрешение доступа появляется только для частной сети, но не для общественной, вы можете разрешить доступ только для частной сети. В этом случае, выберите опцию «Разрешить доступ» или «Разрешить доступ для частных сетей».

  • Если запрос на разрешение доступа не появляется автоматически, вы можете открыть настройки брандмауэра Windows вручную. Для этого, откройте Панель управления, найдите «Брандмауэр Windows» и откройте его. Затем выберите «Разрешение приложений через брандмауэр Windows» или «Разрешить приложение через брандмауэр Windows». В списке найдите Nginx и убедитесь, что для него установлено разрешение для доступа по сети.

После разрешения доступа Nginx к сети, брандмауэр Windows больше не будет запрашивать разрешение при каждом запуске сервера.

Если проблема продолжает возникать или запрос на разрешение доступа не появляется, убедитесь, что у вас есть достаточные права администратора для изменения настроек брандмауэра и выполнения операций сети на вашей Windows-машине.

Настройка Nginx под Windows в качестве службы

Вы можете создать службу Windows для Nginx вручную, используя встроенную команду sc. Вот как вы можете сделать это:

  • Скачайте и установите Nginx (если вы еще этого не сделали).

  • Откройте командную строку с правами администратора.

  • Выполните следующую команду, заменив путь до nginx.exe на ваш:

sc create nginx binPath= "C:\path\to\nginx.exe"

Обратите внимание на пробел после binPath=, он обязателен.

Теперь у вас есть служба Windows для Nginx. Вы можете запустить ее, используя следующую команду:

После того как служба создана, вы можете запустить ее также с помощью команды sc start [service name], а остановить — с помощью команды sc stop [service name].

sc start nginx
sc stop nginx

Однако, нужно помнить, что Nginx, запущенный таким образом, не будет иметь всех функций, таких как автоматический перезапуск после сбоев и другие.
Следует также отметить, что команда sc create создает службу с настройками по умолчанию. В частности, служба будет работать под учетной записью LocalSystem и не будет автоматически запускаться при старте системы. Вы можете изменить эти и другие настройки с помощью дополнительных опций команды sc create или через Менеджер служб Windows.

Также стоит отметить, что по умолчанию служба будет работать под учетной записью LocalSystem, что может не соответствовать вашим требованиям к безопасности. Вы можете изменить учетную запись, под которой работает служба, в свойствах службы в Менеджере служб Windows.

Если вы хотите получить больше контроля над службой, рекомендуется использовать инструментом для создания служб Windows. Ниже приведены некоторые альтернативы:

  • WinSW: WinSW — это инструмент, написанный на C#, который также позволяет запускать приложения как службы Windows. Он обеспечивает поддержку XML для конфигурации служб и поддерживает различные функции управления службами, такие как перезапуск, зависимости служб и т.д.

  • SRVANY: Это утилита из набора инструментов Windows Resource Kit от Microsoft, которая позволяет любому Windows приложению работать как служба. Однако утилита довольно старая и не поддерживается на новых версиях Windows.

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

  • AlwaysUp: Еще одна коммерческая утилита, которая может превращать любое приложение в службу Windows. Она обеспечивает набор функций, включая автоматический перезапуск приложения после сбоев, поддержку электронной почты и даже «приглушение» приложений, которые нежелательно запускать в фоновом режиме.

Итак, в зависимости от ваших требований и бюджета, вы можете выбрать любой из этих инструментов для запуска Nginx как службы Windows.



Installing and Running nginx

  1. Download nginx for Windows Download
  2. Extract the downloaded .zip file
  3. Rename the extracted folder nginx
  4. Copy the extracted nginx files to the desired location, for example C:\Program Files\nginx
  5. Open the nginx folder and double click nginx.exe to run the server

Adding PHP Support

  1. Download Microsoft Visual C++Download
  2. Download PHP for Windows (VC15 x64 NTS) Download
  3. Install Microsoft Visual C++
  4. Extract the downloaded .zip file
  5. Rename the extracted folder php
  6. Copy the extracted php folder to the desired location, for example C:\Program Files\PHP
  7. Open the php install location and right click in the white space while holding down the Shift key > Open PowerShell window here
  8. Paste the following command in the PowerShell window to start the PHP CGI process

    .\php-cgi.exe -b 127.0.0.1:9123

  9. Open Windows Explorer and navigate to the nginx installation directory /conf
  10. Edit nginx.conf in a text editor
  11. Add the following lines inside the server object

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

  12. Save the changes to nginx.conf
  13. Right click the Start button > Run > Type taskkill /f /im «nginx.exe» > Press Enter
  14. Double click nginx.exe to restart the process with PHP support

Running nginx Server on Startup

nginx doesn’t currently have the ability to run as a Windows service natively. A simple workaround is to create a scheduled task to start the nginx server on system startup

  1. Open notepad and paste the following into a blank text file
    start «» /b «C:\Program Files\PHP\php-cgi.exe» -b 127.0.0.1:9123
    start «» /b «C:\Program Files\nginx\nginx.exe» -c «C:\Program Files\nginx\conf\nginx.conf»
  2. Save the text file as startup.bat in the nginx installation directory
  3. Click the Start button > Search Task > Click Task Scheduler
  4. Right click the Task Scheduler Library folder in the top left > Create Basic Task
  5. Name the task nginx startup > Click Next
  6. Select When the computer starts > Click Next
  7. Select Start a program > Click Next
  8. Click the Browse… button and navigate to C:\Program Files\nginx\startup.bat
  9. Set the Start in value to C:\Program Files\nginx > Click Next
  10. Click Finish
  11. Reboot to test that nginx with PHP support starts with the system on boot

Source: http://nginx.org/en/docs/windows.html

Do you need to get the Nginx web server up and running on your Windows server? As it turns out, getting Nginx installed and running on the Windows server platform is easier than ever. Here’s how to get it working on your system.

Head to the official download page to get Ngnix on your Windows Server. Once there, select the latest Windows version, and download it to your server. The download should be quick as it is not very large.

When the download is complete, open up Windows Explorer, and select the “Downloads” folder. Then, move the ZIP archive file into the “C:/” drive. Once the file is placed, open up the Powershell application. Powershell is required to configure the software.

Inside the Powershell app, install the “Expand-Archive” tool in Powershell with the following command.

Get-Command Expand-Archive

After installing Expand-Archive, extract the Nginx file you placed in “C:/.”

Expand-Archive -Path C:\nginx-1.23.2.zip -DestinationPath C:\ -Verbose

The extraction process should happen fast. When the process is complete, run the clear command to clear the prompt of all other commands. You can then run the cd command to move into the “nginx-1.23.2” folder.

clear
cd .\nginx-1.23.2\

Once inside of the folder, run the ls command to view all of the contents of the Nginx folder on the “C:/” drive on Windows Server. Nginx.exe should now be running in the background on Windows Server. You can check this with the GUI task manager included with Windows Server or the ps command in Powershell.

How to configure Nginx web server on Windows Server

The Nginx web server doesn’t require much configuration out of the box in Windows Server. However, we’ll still need to go over the basics (where the web server data is placed, etc.)

Nginx on Windows works a little differently than on Linux. Instead of the /var/www/ folder, Nginx sets itself up where it was initially launched. So, as Nginx was launched from C:\nginx-1.23.2\, the “HTML” folder in which web pages are served is located in:

C:\nginx-1.23.2\html\

Similarly, the configuration file folder for Nginx is located in C:\nginx-1.23.2\conf\, the log files are stored in C:\nginx-1.23.2\logs\, etc. To access these files for modification purposes, open Windows Explorer, select “C:\nginx-1.23.2\” and go from there.

How to manage Nginx on Windows Server

You will need to know a few commands to manage the Nginx web server on Windows Server. To start, open up the Windows Explorer app and navigate to “C:\nginx-1.23.2”

Once you’ve accessed the folder, hold down the Shift key, and right-click on a blank space. Then, select “Open PowerShell window here.” Once Powershell is open, you can use the following commands to control Nginx.

./nginx.exe -s stop : Shut down the server fast.
./nginx.exe -s quit : Shut down the server "gracefully."
./nginx.exe -s reload : Change configuration, start a new process, etc.
./nginx.exe -s reopen : Run this to re-open log files.

How to edit the Nginx homepage on Windows Server

Like every web server, the Nginx web server provides a default “index.html” file. You can access this file at localhost/index.html. This file is the default page shown in the web directory when the address is specified.

For example, if you navigated to https://your-windows-server/somefolder/, it would automatically show you the “index.html” or “index.htm” file in that folder. If you’d like to customize the index.html file, do the following.

First, open Powershell. Then, use the cd command to access the Nginx folder on the “C:/” drive in Windows Server.

cd C:/nginx-1.23.2/

After accessing the Nginx folder on the “C:/” drive, you will need to load up the “html” folder. To do this, run the cd command again in the Powershell window.

cd html

You can open the “index.html” file inside the Notepad app for editing purposes. Once it is open, you can delete what Nginx puts and make your own custom page for your web server.

notepad index.html

Once you’ve finished editing your files in Notepad, you can save them by pressing Ctrl + S on the keyboard. This keyboard combination should save your edits to the “index.html” file.

When you’ve saved your edits, open a web browser and navigate to the following URL to view your handiwork.

http://your-windows-server-ip/

How to uninstall Nginx from your Windows Server

To uninstall Nginx from Windows Server, ensure that “nginx.exe” is no longer running. Once it is shut down, you can delete the Nginx folder in the “C:/” drive. However, ensure all data and configuration files are backed up before deleting them in case you wish to redeploy your web server later.

default avatar image

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Программа спроектированная по требованиям windows 95
  • Windows updates downloader microsoft
  • Активатор windows 11 через cmd
  • Netsh int reset all windows 10
  • Как изменить обложку mp3 файла в windows 10