Configuration Guide
Basic Configuration
Creates the necessary directory structure and configures main Nginx settings for optimal performance:
# Create server block directory
sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled
# Edit main config
sudo nano /etc/nginx/nginx.conf
Example nginx.conf with performance optimizations:
user www-data;
worker_processes auto; # Automatically determines optimal number of worker processes
pid /run/nginx.pid;
events {
worker_connections 768; # Maximum number of simultaneous connections per worker
multi_accept on; # Accept as many connections as possible
}
http {
sendfile on; # Enables kernel sendfile for better file transfer
tcp_nopush on; # Optimizes packet sending
types_hash_max_size 2048; # Increases hash table size
server_tokens off; # Disables version display for security
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1.2 TLSv1.3; # Only allow secure TLS versions
ssl_prefer_server_ciphers on; # Prefer server's cipher order
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on; # Enable compression
gzip_vary on; # Add Vary header
gzip_proxied any; # Compress proxied requests
gzip_comp_level 6; # Compression level (1-9)
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Create Site Configuration
Sets up a virtual host configuration for your website, including PHP processing if needed:
server {
listen 80; # Listen on port 80
server_name example.com www.example.com;
root /var/www/example.com; # Document root
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404; # Basic URL handling
}
location ~ \.php$ { # PHP file handling
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
location ~ /\.ht { # Deny access to .htaccess files
deny all;
}
}
Enable Site
Activates the site configuration and verifies syntax:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
Common Commands
Essential commands for managing Nginx service:
# Test configuration syntax
sudo nginx -t
# Service control
sudo systemctl start nginx # Start service
sudo systemctl stop nginx # Stop service
sudo systemctl restart nginx # Full restart
sudo systemctl reload nginx # Reload config without dropping connections
# Check service status
sudo systemctl status nginx