Configuration File Structure
Nginx uses a hierarchical configuration with contexts:
# Main context (global settings)
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Events context (connection handling)
events {
worker_connections 1024;
multi_accept on;
}
# HTTP context (web server settings)
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Logging
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
# Performance
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
# Include site configurations
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}Key Directives
Worker Processes
# Auto-detect CPU cores (recommended)
worker_processes auto;
# Or set manually
worker_processes 4;Worker Connections
events {
# Max connections per worker
worker_connections 1024;
# Accept multiple connections at once
multi_accept on;
# Use efficient event method
use epoll; # Linux
# use kqueue; # FreeBSD/macOS
}Logging
# Error log with level
error_log /var/log/nginx/error.log warn;
# Access log with format
access_log /var/log/nginx/access.log main;
# Disable access log for performance
access_log off;
# Buffer access logs
access_log /var/log/nginx/access.log main buffer=16k flush=5m;Testing Configuration
# Test syntax
nginx -t
# Test and show config
nginx -T
# Reload without downtime
nginx -s reload
# Or: systemctl reload nginx
# Reopen log files
nginx -s reopenCommon Signals
# Graceful shutdown
nginx -s quit
# Fast shutdown
nginx -s stop
# Reload configuration
nginx -s reload
# Reopen log files (for rotation)
nginx -s reopen - nginx
- configuration
- nginx.conf
- directives
- basics