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 -vCentOS/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 -vFrom 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.serviceService 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.logConfiguration
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.confEnable Site
# Symlink site to sites-enabled
sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/
# Reload Nginx
sudo systemctl reload nginxTest Configuration
# Test syntax
sudo nginx -t
# Show full configuration
sudo nginx -TCommon 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/nginxFirewall 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 --reloadUninstall
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/nginxCentOS/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/nginxPerformance 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;