nginx for Windows | Basics
January 03, 2020
nginx for Windows
Download and run
download the latest mainline version distribution and run nginx, Here is an example for the drive C: root directory:
cd c:\
unzip nginx-1.17.7.zip
cd nginx-1.17.7
start nginxRun the tasklist command-line utility to see nginx processes:
C:\nginx-1.17.7>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 KOne of the processes is the master process and another is the worker process. If nginx does not start, look for the reason in the error log file logs\error.log.
nginx/Windows runs as a standard console application (not a service), and it can be managed using the following commands:
# fast shutdown
nginx -s stop
# graceful shutdown
nginx -s quit
# changing configuration, starting new worker processes with a new configuration, graceful shutdown of old worker processes
nginx -s reload
# re-opening log files
nginx -s reopennginx/Windows uses the directory where it has been run as the prefix for relative paths in the configuration.
In the example above, the prefix is C:\nginx-1.17.7. Paths in a configuration file must be specified in UNIX-style using forward slashes:
access_log logs/site.log;
root C:/web/html;nginx.conf
- nginx consists of modules which are controlled by directives specified in the configuration file
- directives are divided into simple directives (ends with
;) and block directives (surrounded by { and }). - If a block directive can have other directives inside braces, it is called a context (examples: events, http, server and location)
- Directives placed in the configuration file outside of any contexts are considered to be in the main context. The
eventsandhttpdirectives reside in the main context,serverinhttp, andlocationinserver.
example nginx.conf
#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;
#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;
# }
#}
}