User Tools

Site Tools


servers:windows:nginx_php_php-cgi

This is an old revision of the document!


Information

Prerequisites

Install

nginx

  • Extract to root system drive for C:\nginx-1.29.4\nginx.exe
"explorer.exe" "%SystemDrive%"

PHP-CGI

  • Extract to root system drive for C:\php-*\php-cgi.exe
  • Add to user Path
"explorer.exe" "%SystemDrive%"
"SystemPropertiesAdvanced.exe"
C:\php-8.5.1-nts-Win32-vs17-x64

Firewall

CD "%SystemDrive%\nginx-"*"\" && "netsh.exe" advfirewall firewall add rule name="nginx" dir="in" action="allow" profile="any" program="%CD%\nginx.exe" protocol="tcp" localport="80,443"

Delete Rule

"netsh.exe" advfirewall firewall delete rule name="nginx"

Check Defaults

nginx

CD "%SystemDrive%\nginx-"*"\conf" && "notepad.exe" "nginx.conf"

PHP

CD "%SystemDrive%\php-"*"-nts-Win32-"*"-x64\" && "notepad.exe" "php.ini-production"
CD "%SystemDrive%\php-"*"-nts-Win32-"*"-x64\" && "notepad.exe" "php.ini-development"

nginx Settings

confs

MKDIR "%SystemDrive%\www\nginx\conf" & CD "%SystemDrive%\nginx-"*"\conf" && COPY /Y "fastcgi_params" "%SystemDrive%\www\nginx\conf\fastcgi_params"
MKDIR "%SystemDrive%\www\nginx\conf" & CD "%SystemDrive%\nginx-"*"\conf" && COPY /Y "mime.types" "%SystemDrive%\www\nginx\conf\mime.types"

Folders

MKDIR "%SystemDrive%\www\php" "%SystemDrive%\www\nginx\conf.d" "%SystemDrive%\www\nginx\default.d" "%SystemDrive%\www\nginx\vhosts.d"

HTTPS Redirect

  • This automatically redirects non-HTTPS site links to HTTPS
"notepad.exe" "%SystemDrive%\www\nginx\conf.d\http-redirect.conf"
server {
 listen "80" "default_server";
 listen "[::]:80" "default_server";

 return "301" "https://$host$request_uri";
}

# End

Non-existent 404

  • This prevents unconfigured subdomains from loading assets from other sites 3)
"notepad.exe" "%SystemDrive%\www\nginx\conf.d\non-existent.conf"
server {
 listen "443" "ssl" "default_server";
 http2 "on";
 server_name "_";

 return "404";
}

# End

Headers

  • Add to individual site configs as an include
"notepad.exe" "%SystemDrive%\www\nginx\default.d\headers.conf"
add_header "Strict-Transport-Security" "max-age=63072000; includeSubdomains; preload" "always";
add_header "X-Content-Type-Options" "nosniff" "always";
add_header "X-Frame-Options" "sameorigin" "always";
add_header "X-XSS-Protection" "1; mode=block" "always";
add_header "Cache-Control" "no-store, no-transform, public" "always";
add_header "Referrer-Policy" "same-origin" "always";
add_header "Expect-CT" "max-age=0" "always";
add_header "Permissions-Policy" "geolocation=(), microphone=(), payment=(), usb=(), vr=(), magnetometer=(), midi=(), camera=(), ambient-light-sensor=(), accelerometer=()" "always";

# End

nginx

"notepad.exe" "%SystemDrive%\www\nginx\nginx.conf"
worker_processes "1";
error_log "logs/error.log" "emerg";

events {
 multi_accept "on";
 worker_connections "1024";
}

http {
 access_log "off";

 include "C:/www/nginx/conf.d/*.conf";
 include "C:/www/nginx/vhosts.d/*.conf";
 include "C:/www/nginx/conf/mime.types";
 default_type "application/octet-stream";

 sendfile "on";
 tcp_nopush "on";
 tcp_nodelay "on";
 keepalive_timeout "65";
 types_hash_max_size "4096";
 server_names_hash_bucket_size "64";

 gzip "on";
 gzip_vary "on";
 gzip_proxied "any";
 gzip_comp_level "9";
 gzip_types "*";
}

# End
CD "%SystemDrive%\nginx-"*"\" && "nginx.exe" -c "%SystemDrive%\www\nginx\nginx.conf" -t

CSP Headers

  • The empty CSP allows all and can be useful for new site bring-ups, and should be placed in site-specific configs underneath the include line(s)
add_header Content-Security-Policy "default-src 'self'" always;
add_header Content-Security-Policy "" always;

SSL Certs

Let's Encrypt

Settings

"notepad.exe" "%SystemDrive%\www\nginx\conf.d\ssl.conf"
ssl_certificate "C:/Certbot/live/realmofespionage.xyz/fullchain.pem";
ssl_trusted_certificate "C:/Certbot/live/realmofespionage.xyz/fullchain.pem";
ssl_certificate_key "C:/Certbot/live/realmofespionage.xyz/privkey.pem";

ssl_session_timeout "10m";
ssl_session_cache "shared:SSL:10m";
ssl_session_tickets "off";
ssl_buffer_size "4k";

ssl_protocols "TLSv1.2" "TLSv1.3";
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM";
ssl_prefer_server_ciphers "on";
ssl_ecdh_curve "secp384r1";

# End

Scripts

MKDIR "%SystemDrive%\www\scripts\nginx"
"explorer.exe" "%SystemDrive%\www\scripts\nginx"

Start

"notepad.exe" "%SystemDrive%\www\scripts\nginx\Start.bat"
@echo off

TITLE nginx
CD "%SystemDrive%\nginx-"*"\"

"nginx.exe" -c "%SystemDrive%\www\nginx\nginx.conf"

:: End
"%SystemDrive%\www\scripts\nginx\Start.bat"

Stop

"notepad.exe" "%SystemDrive%\www\scripts\nginx\Stop.bat"
@echo off

TITLE nginx Stop
CD "%SystemDrive%\nginx-"*"\"

"nginx.exe" -s "quit"

TIMEOUT /T "2" /NOBREAK
TASKKILL /IM "nginx.exe" /T /F

CD "%Temp%"

:: End
"%SystemDrive%\www\scripts\nginx\Stop.bat"

Reload

"notepad.exe" "%SystemDrive%\www\scripts\nginx\Reload.bat"
@echo off

CD "%SystemDrive%\nginx-"*"\"

"nginx.exe" -s "reload"
"nginx.exe" -s "reopen"

CD "%Temp%"

:: End
"%SystemDrive%\www\scripts\nginx\Reload.bat"

Task Scheduler

nginx

  • Auto-start
SCHTASKS /Create /SC "ONLOGON" /TN "nginx" /TR "%SystemDrive%\www\scripts\nginx\Start.bat" /F

Resources

3)
if a site/URL doesn't have a vhosts.d\*.conf, it'll 404
/usr/local/www/wiki/data/attic/servers/windows/nginx_php_php-cgi.1769730546.txt.gz · Last modified: by Sean Rhone