DocumentationNginxNginx

Nginx

Installation

Ubuntu/Debian

# Update package manager
sudo apt update
 
# Install Nginx
sudo apt install nginx -y
 
# Start and enable Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
 
# Verify installation
sudo systemctl status nginx
nginx -v

CentOS/RHEL

# Install Nginx
sudo yum install nginx -y
 
# Start and enable Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
 
# Verify installation
sudo systemctl status nginx
nginx -v

From Source

# Install dependencies
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev libgd-dev libgeoip-dev wget -y
 
# Download latest Nginx
cd /tmp
wget http://nginx.org/download/nginx-1.25.0.tar.gz
tar -xzf nginx-1.25.0.tar.gz
cd nginx-1.25.0
 
# Configure Nginx
./configure \
  --prefix=/etc/nginx \
  --sbin-path=/usr/sbin/nginx \
  --modules-path=/usr/lib64/nginx/modules \
  --with-http_ssl_module \
  --with-http_v2_module \
  --with-http_gzip_static_module \
  --with-http_realip_module \
  --with-http_geoip_module
 
# Compile and install
make
sudo make install
 
# Create systemd service file
sudo nano /etc/systemd/system/nginx.service

Service Management

# Start Nginx
sudo systemctl start nginx
 
# Stop Nginx
sudo systemctl stop nginx
 
# Restart Nginx
sudo systemctl restart nginx
 
# Reload configuration (without stopping)
sudo systemctl reload nginx
 
# Enable on boot
sudo systemctl enable nginx
 
# Check status
sudo systemctl status nginx
 
# View logs
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

Configuration

Configuration Files

# Main configuration
sudo nano /etc/nginx/nginx.conf
 
# Sites directory
sudo nano /etc/nginx/sites-available/default
sudo nano /etc/nginx/conf.d/default.conf

Enable Site

# Symlink site to sites-enabled
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
 
# Reload Nginx
sudo systemctl reload nginx

Test Configuration

# Test syntax
sudo nginx -t
 
# Show full configuration
sudo nginx -T

Common Locations

# Nginx root directory
/etc/nginx
 
# Default web root
/var/www/html
/usr/share/nginx/html
 
# Configuration directory
/etc/nginx/sites-available
/etc/nginx/sites-enabled
/etc/nginx/conf.d
 
# Log directory
/var/log/nginx
 
# Cache/temp directory
/var/cache/nginx

Firewall Configuration

# UFW (Ubuntu)
sudo ufw allow 'Nginx Full'
sudo ufw allow 80
sudo ufw allow 443
 
# Firewalld (CentOS)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Uninstall

Ubuntu/Debian

# Stop Nginx
sudo systemctl stop nginx
 
# Remove Nginx
sudo apt remove nginx nginx-common -y
sudo apt autoremove -y
 
# Remove configuration
sudo rm -rf /etc/nginx
sudo rm -rf /var/www/html
sudo rm -rf /var/log/nginx

CentOS/RHEL

# Stop Nginx
sudo systemctl stop nginx
 
# Remove Nginx
sudo yum remove nginx -y
 
# Remove configuration
sudo rm -rf /etc/nginx
sudo rm -rf /var/log/nginx

Performance Tuning

# Edit main config
sudo nano /etc/nginx/nginx.conf
 
# Optimal settings
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
client_max_body_size 100m;
gzip on;
gzip_vary on;
gzip_types text/plain text/css text/xml text/javascript application/json;