Windows
  • WINDOWS SERVERS
  •   Windows server 2016
  •     Инсталиране
  •     Настройка
  •     DHCP
  •     DNS
  •     Активна директория (AD)
  •     DNS и AD заедно
  •     Сайтове и репликации в AD
  •     Доверие и групова безопасност в AD
  •     Групови политики в AD
  •     RRAS сървър
  • WINDOWS WORKSTATIONS
  •   Windows 10
  •     Команди в Command Prompt
  •     Команди в Powershell
  •     DiskPart
  •   Windows приложения
  •     Виртуални хостове в XAMPP
  • ОПТИМИЗАЦИЯ
  •     Оптимизация на Windows 10
  •     Оптимизация на Windows 10 LTSB
  •     Windows 10 1607 > Windows 10 LTSB
  •   Оптимизация Win 22H2
  •     Изтриване на приложения
  •   Win_10 към Win_11 от ISO файл
  • PROGRAMS FOR WINDOWS
  •   Мрежови програми
  •     Apache и PHP
  •     Nninx PHPMyAdmin MySQL
  •     OpenSSH Server
  •     FileZilla
  •     AIO Boot
  •   Резервно копиране и MultiBOOT
  •     Cobian Reflector
  •     FreeFileSync
  •     VENTOY UEFI/Legacy
  •   От всичко по малко
  •     Notepad++
  • KРАКВАНЕ - ХАКВАНЕ
  •   Sublime Text
  •   Ремонт на USB флашка
  • BGPOST
  •   Ограничени потребители
  •     Администраторски права
  •     Контролен панел
  •   Специфични инсталации
  •     .NET 3.5
  •     Xerox B305
  • Nninx PHPMyAdmin MySQL във Windows

    Още един вариант на WEB сървър във Windows. За разлика от Apache тук ползваните ресурси са по-малко, а и работи една идея по-бързо.

    Инсталиране и настройка на NGINX

    За начало да смъкнем програмата от https://nginx.org/en/download.html. От страницата избираме стабилната версия (Stable version) >> nginix/Windows (в случая е Windows-1.26.3). Точния линк в моя случай е https://nginx.org/download/nginx-1.26.3.zip. Разопаковаме nginx-1.26.3.zip.. Главната разопакована папка се получава nginx-1.26.3. Преименуваме я на nginx. Получената папка nginx я преместваме на C:\. Трябва да получите C:\nginx. Сега да поправим главния конфигурационнен файл. Натискаме комбинацията от клавиши Win+R и в Run прозореца пишем:

    Pic01

    notepad C:\nginx\conf\nginx.conf #user nobody; worker_processes auto; ### Трябва да сложите броя на ядрата които имате (core+vcore), ако не знаете оставете auto #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; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }

    Това е оригиналния файл, да го конфигурираме за нас. Уговорката, че ще ползваме повече от един виртуален хост. Първо правим копие на оригиналния конфигурационнен файл, а след това създаваме нашия.

    copy c:\nginx\conf\nginx.conf c:\nginx\conf\nginx.conf.original notepad C:\nginx\conf\nginx.conf ### Трябва да изглежда така: worker_processes auto; ### auto, защото системата сама да определи колко ядра ще ползва error_log logs/error.log warn; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; client_max_body_size 150m; server { listen 90; server_name localhost; root html; location / { index index.html index.htm; } } }

    Забележете !!! Работим на порт 90, а не както е стандартно на 80. Това е така защото на порт 80 в моя случай ползвам Apache. На по-късен етап ще се прехвърлим на порт 80. Да направим два скрипта с които да пускаме и спираме Nginx.

    ### Стартираме Nginx notepad c:\nginx\start.bat @ECHO ON set SRVPATH=C:\nginx start /D %SRVPATH% nginx.exe tasklist /fi "imagename eq nginx.exe" pause ### Спираме Nginx. notepad c:\nginx\stop.bat @ECHO ON taskkill /f /IM nginx.exe tasklist /fi "imagename eq nginx.exe" pause ### Рестартираме Nginx notepad c:\nginx\restart.bat @ECHO ON taskkill /f /IM nginx.exe set SRVPATH=C:\nginx start /D %SRVPATH% nginx.exe tasklist /fi "imagename eq nginx.exe" pause

    Сега можем да пускаме/спираме Ngnix без да пишем дълги команди по терминала. Да направим това.

    c:\nginx\stop.bat c:\nginx\start.bat c:\nginx\restart.bat

    Ако пробваме в браузъра http://localhost:90 ще се отвори стандартната стартираща страница на Nginx.

    Инсталиране и настройка на PHP

    За да работи Nginx с PHP то той трябва да се изтегли и сложи на машината. Да смъкнем PHP от https://windows.php.net/download#php-8.3. Ще ползваме версия PHP 8.3 (8.3.19). И ще смъкнем zip пакета който в случая е 30МВ. Внимание !!! Ползвайте Non Thread Safe. Когато правите това упражнение версията най-вероятно ще е различна. Обърнете внимание, която версия предлага нея ползвайте. Получи ми се един бъг с версия 8.2. Когато трябваше да се отвори страницата тя излизаше празна. Излезе проблем с версията 8.2. Разархивираме zip пакета и съдържанието му го слагаме в C:\nginx\php\ Има още едно условие за да работи php-cgi.exe и това е наличието на Microsoft Visual C++. В този случай ползваме версия 2015-2022. Може да се смъкне от https://www.microsoft.com/en-us/download/details.aspx?id=48145 и да се инсталира

    PHP и Nginx

    Ако влезем в папката C:\nginx\php\ ще видим много ЕХЕ файлове. Примерно има php.exe, php-cgi.exe php-win.exe и т.н. По стари спомени php.exe се отнасяше при използване на Apache. Ние ползваме Ngnix и в нашия случай ще е php-cgi.exe. За да работи Nginix с PHP трябва да се дефинира тяхната връзка. За тази цел в Linux се ползва или Unix сокет или TCP сокет. Тук ще ползваме TCP сокет. Да поправим конфигурационния файл за виртуалните хостове (да включим PHP).

    notepad C:\nginx\conf\nginx.conf worker_processes auto; error_log logs/error.log warn; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; client_max_body_size 150m; server { listen 80; server_name localhost; root html; location / { index index.php index.html index.htm; } 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; } } }

    Да сложим тестови PHP файлове в папките на виртуалните хостове.

    echo '<? php phpinfo(); ?>' >> C:\nginx\html\index.php

    Спираме и пускам е Nginx. За да работи Nginx с PHP е необходимо да се пусне и php-cgi.exe Да редактираме стопиращия и стартиращия скрипт които създадохме по-горе.

    notepad c:\nginx\start.bat ### Стартиращ скрипт @ECHO OFF ECHO Starting PHP FastCGI... C:\nginx\RunHiddenConsole.exe C:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 ECHO Starting NGINX start C:\nginx\nginx.exe tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" popd EXIT /b ### Стопиращ скрипт @ECHO OFF taskkill /f /IM nginx.exe taskkill /f /IM php-cgi.exe tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" popd EXIT /b ### Скрипт за Restart и наблюдение @ECHO ON taskkill /f /IM nginx.exe taskkill /f /IM php-cgi.exe ECHO Starting PHP FastCGI... C:\nginx\RunHiddenConsole.exe C:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 ECHO Starting NGINX start C:\nginx\nginx.exe tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" pause

    Обърнете внимание, ползваме RunHiddenConsole.exe. Този изпълним файл позволява да стартирате сесията на заден план, без да виждате "зависналия" терминален прозорец. Самата програма можете да я изтеглите от: https://tlan.net/menu/windows/programs/winnet/nginx/pic/RunHiddenConsole.exe. Обърнете внимание на рестартиращия скрипт. Накрая завършваме с pause. След като завършите с настройките махнете тази опция. За сега е така за да може да видим какво точно се стартира и дали е правилно стартирал процеса. За да работи правилно PHP трябва да се конфигурира точно. Примерно искаме да ползваме PHP заедно с MySQL то тогава трябва да укажем ползването на плъгина му. Това става чрез конфигурационния файл C:\nginx\php\php.ini. Да създадем php.ini от подготвените при инсталацията на PHP.

    copy C:\nginx\php\php.ini-development C:\nginx\php\php.ini

    Сега можем "тънко" да настроим PHP. Ако искаме пък да проверим дали сме направили правилно някой конфигурационен файл на PHP може да ползваме следната команда:

    C:\nginx\php\php.exe -l C:\nginx\html\test\index.php

    Виртуални хостове в Nginx

    Тази тема бях я развивал в секцията Linux. Идеята е същата само дефинирането на пътищата е малко по-различно. Първо да нека два виртуални домейна да отговарят на localhost. Домейните да се наричат tlan.local и tachko.local.

    ### Моя администратор се нарича administrator, вашия може да е друго име runas /user:administrator "notepad C:\Windows\System32\drivers\etc\hosts" ### Ще поиска да въведете паролата на администратора # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost 127.0.0.1 localhost 127.0.0.1 tlan.local 127.0.0.1 tachko.local

    Има шанс да не позволи да пишете във файла, защото нямате права върху него. В моя случай съм оправил този проблем през Security на файла. Да създадем два виртуални хоста.

    notepad C:\nginx\conf\nginx.conf worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name tachko.local; root "G:/GDisk/My Drive/WWW/tachko.local/"; error_log c:/nginx/logs/tachko.local.error.log; access_log c:/nginx/logs/tachko.local.access.log; location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { } 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; } } server { listen 80; server_name tlan.local; root D:/Clouds/OneDrive/WWW/tlan.local/; error_log c:/nginx/logs/tlan.local.error.log; access_log c:/nginx/logs/tlan.local.access.log; location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { } 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; } } } mkdir D:\Clouds\OneDrive\WWW\tachko.local\ mkdir D:\Clouds\OneDrive\WWW\tlan.local\

    Да създадем и PHP файлове в съответните директории.

    echo '<? php phpinfo(); ?>' >> "G:\GDisk\My Drive\WWW\tachko.local\index.php" echo '<? php phpinfo(); ?>' >> D:\Clouds\OneDrive\WWW\tlan.local\index.php

    Рестартираме Nginx и php-cgi.

    Можем да пробваме на http://tachko.local и http://tlan.local. До тук всичко работи нормално. Още един вариант на конфигурационен файл за виртуален хост.

    server { listen 80; server_name localhost; index index.php; error_log c:/nginx/logs/localhost.error.log; access_log c:/nginx/logs/localhost.access.log; root c:/nginx/html; location / { try_files $uri /index.php$is_args$args; } location ~ \.php { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_index index.php; fastcgi_pass 127.0.0.1:9000; } }

    Също работи нормално.

    Инсталиране и настройка на MySQL

    Накъде без бази данни? За да работи пълноценно WEB сървъра е необходим и MySQL. На по-късен етап ще го привържем към Nginx и PHP чрез php.ini. Започваме с инсталацията му. Имаме два пътя, или чрез инсталационния пакет или да ползваме архив. Да се пробваме чрез втория вариант. От https://dev.mysql.com/downloads/mysql/ смъкваме Windows (x86, 64-bit), ZIP Archive. След това разопаковаме архива в C:\Nginx. Трябва да получите C:\nginx\mysql. През терминален прозорец да инициализираме MySQL

    cd C:\nginx\mysql\bin mysqld --initialize-insecure

    Сега можем да стартираме MySQL като демон.

    mysqld --console

    Тази команда за съжаление ще блокира прозореца защото MySQL се изпълнява като демон и ако затворите прозореца ще прекъснете процеса. Отваряме втори терминален прозорец. И чрез него ще влезем в MySQL.

    mysql -u root

    В MySQL 8.0 и по-нови, плъгинът за удостоверяване по подразбиране е caching_sha2_password, който не ви позволява да се свържете с mysql, като използвате първоначалното влизане по подразбиране в php. Повечето потребители ще получат съобщение за грешка “Connection failed: The server requested authentication method unknown to the client”. Сървърът е поискал метод за удостоверяване, неизвестен на клиента“ . За да го активираме обратно към естествения, трябва да зададем парола за root с mysql_native_password.

    mysql -u root ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; FLUSH PRIVILEGES;

    PHP комуникира с MySQL

    notepad C:\nginx\php\php.ini ### Потърсете и променете: extension=C:\nginx\php\ext\php_mysqli.dll extension=C:\nginx\php\ext\php_curl.dll extension=C:\nginx\php\ext\php_pdo_mysql.dll extension=C:\nginx\php\ext\php_mbstring.dll extension=C:\nginx\php\ext\php_gd.dll extension=C:\nginx\php\ext\hp_soap.dll

    Внимание !!! Това са само примери. В зависимост какво ползвате слагайте тези разширения които Ви трябват. Няма смисъл да слагате всичко. По-надолу ще покажа кои са необходими за работата на PHPMyAdmin.

    Накрая поправяме скриптовете за пускане/спиране/рестартиране на WEB сървъра.

    notepad c:\nginx\start.bat ### Стартиращ скрипт @ECHO OFF ECHO Starting PHP FastCGI... C:\nginx\RunHiddenConsole.exe C:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 ECHO Starting NGINX start C:\nginx\nginx.exe ECHO Starting MySQL... C:\nginx\RunHiddenConsole.exe C:\nginx\mysql\bin\mysqld --console tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" tasklist /fi "imagename eq mysqld.exe" popd EXIT /b ### Стопиращ скрипт @ECHO OFF taskkill /f /IM nginx.exe taskkill /f /IM php-cgi.exe taskkill /f /IM mysqld.exe tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" tasklist /fi "imagename eq mysqld.exe" popd EXIT /b ### Скрипт за Restart и наблюдение @ECHO ON taskkill /f /IM nginx.exe taskkill /f /IM php-cgi.exe taskkill /f /IM mysqld.exe ECHO Starting PHP FastCGI... C:\nginx\RunHiddenConsole.exe C:\nginx\php\php-cgi.exe -b 127.0.0.1:9000 ECHO Starting NGINX start C:\nginx\nginx.exe ECHO Starting MySQL... C:\nginx\RunHiddenConsole.exe C:\nginx\mysql\bin\mysqld --console tasklist /fi "imagename eq nginx.exe" tasklist /fi "imagename eq php-cgi.exe" tasklist /fi "imagename eq mysqld.exe" pause

    PHPMyAdmin и Nginx

    За начало да смъкнем PHPMyAdmin от: https://www.phpmyadmin.net/downloads/. Разархивираме пакета и го слягаме в D:/Clouds/OneDrive/WWW/tlan.local/. Трябва да се получи D:/Clouds/OneDrive/WWW/tlan.local/phpMyAdmin

    Pic02

    Някои extended features липсват за да работи правилно. По-нагоре обясних, че са необходими някои extensions за да работи правилно phpMyAdmin. Да оправим този проблем

    notepad C:\nginx\php\php.ini ;extension_dir = "ext" extension_dir = "ext" ;extension=mysql extension=mysql

    Отново пробваме на http://tlan.local/phpmyadmin.

    Pic03

    Първата задача е да създадем парола за root в MySQL.

    C:\nginx\mysql\bin\\\mysql_secure_installation.exe Securing the MySQL server deployment. Enter password for user root: ********** The 'validate_password' component is installed on the server. The subsequent steps will run with the existing configuration of the component. Using existing password for root. Estimated strength of the password: 50 Change the password for root ? ((Press y|Y for Yes, any other key for No) : N ... skipping. By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : Yes Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Yes Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Yes - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Yes Success. All done!

    Рестартираме WEB сървъра и тестваме наново.

    Pic04

    Виждаме, че неправилно е конфигуриран phpMyAdmin. Да оправим този проблем.

    C:\nginx\mysql\bin\mysql.exe -u root -p Enter password: ********** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 9.2.0 MySQL Community Server - GPL Copyright (c) 2000, 2025, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0.02 sec) quit

    MySQL "слуша" на порт 3306. Да редактираме конфигурационния файл на phpMyAdmin.

    copy D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\config.sample.inc.php D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\config.inc.php

    Пробваме да влезем като root.

    Pic05

    Влизаме но с грешки. Липсва разширението mbstring и т.н. extension=php_mbstring.dll

    notepad C:\nginx\php\php.ini ;extension=mbstring extension=mbstring

    Рестартираме WEB сървъра и пробваме.

    Pic06

    notepad D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\config.inc.php $cfg['blowfish_secret'] = 'KLS$vbc91Lkja$vc@opGbxA278EWopdc'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

    Рестартираме WEB сървъра и пробваме.

    Pic07

    The $cfg['TempDir'] (D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\tmp\) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this. Грубо казано нямаме права върху папката D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\tmp\

    notepad D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\config.inc.php * Directories for saving/loading files from server */ $cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; $cfg['TempDir'] = '/tmp';

    Проверяваме:

    Pic08

    Всички критични грешки са изчистени. Да проверим какво още липсва:

    Pic09

    Досадна грешка. Просто я игнорираме. Не е важна.

    notepad D:\Clouds\OneDrive\WWW\tlan.local\phpMyAdmin\config.inc.php /* Storage database and tables */ // $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; // $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; // $cfg['Servers'][$i]['relation'] = 'pma__relation'; // $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; // $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; // $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; // $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; // $cfg['Servers'][$i]['history'] = 'pma__history'; // $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; // $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; // $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; // $cfg['Servers'][$i]['recent'] = 'pma__recent'; // $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; // $cfg['Servers'][$i]['users'] = 'pma__users'; // $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; // $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; // $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; // $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; // $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; // $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; $cfg['PmaNoRelation_DisableWarning'] = true;

    Отново проверяваме:

    Pic10

    Вече всичко е наред. Ако не бяхме я игнорирали става много сложно. Проблема се оправя но се влиза базите данни и там се коригира, след това се настройва конфигурационния файл на phpMyAdmin.

    Автоматично прехвърляне от HTTPS към HTTP

    За разлика от Apache в Nginx няма генерирани сертификати. Ще трябва сами да си ги създадем. Ще ползваме OpenSSL.

    winget --version v1.10.340 winget search openssl The `msstore` source requires that you view the following agreements before using. Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction The source requires the current machine's 2-letter geographic region to be sent to the backend service to function properly (ex. "US"). Do you agree to all the source agreements terms? [Y] Yes [N] No: Y Name Id Version Match Source ----------------------------------------------------------------------------- FireDaemon Lozenge FireDaemon.FireDaemonLozenge 3.0.2 Tag: openssl winget FireDaemon OpenSSL 3 FireDaemon.OpenSSL 3.4.1 Tag: openssl winget OpenSSL 3.4.1 ShiningLight.OpenSSL.Dev 3.4.1 winget OpenSSL Light 3.4.0 ShiningLight.OpenSSL.Light 3.4.1 winget winget install -e --id ShiningLight.OpenSSL dafdasdfasdfasdfasdfa

    Още openssl не работи защото не е оправен пътя до него.

    setx PATH "%PATH%;C:\Program Files\OpenSSL-Win64\bin" /M asdfasdfasdfasdfadf

    Вече може да тестваме в PowerShell.

    openssl version asdfasdfasdfad openssl req -newkey rsa:4096 -nodes -sha512 -x509 -days 3650 -nodes -out C:\nginx\ssl\certs\tlan-local.pem -keyout C:\nginx\ssl\private\tlan-local.key Country Name (2 letter code) [AU]: BG State or Province Name (full name) [Some-State]: Targovishte Locality Name (eg, city) []: Tar Organization Name (eg, company) [Internet Widgits Pty Ltd]: Navy Organizational Unit Name (eg, section) []: IT Common Name (e.g. server FQDN or YOUR name) []: home.tlan.net Email Address []: tachko@tlan.net

    notepad C:\nginx\conf\nginx.conf worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name tachko.local; root "G:/GDisk/My Drive/WWW/tachko.local/"; error_log c:/nginx/logs/tachko.local.error.log; access_log c:/nginx/logs/tachko.local.access.log; location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { } 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; } } server { listen 443 ssl; server_name tlan.local; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/cert.key; location / { return 301 http://$http_host$request_uri; } } server { listen 80; server_name tlan.local; root D:/Clouds/OneDrive/WWW/tlan.local/; error_log c:/nginx/logs/tlan.local.error.log; access_log c:/nginx/logs/tlan.local.access.log; location / { index index.php index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { } 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; } } }