Web Servers (Apache, Nginx, Caddy)

Mastering Apache: An In-depth Guide to Key Features and Advanced Techniques

Published · Updated 15 min read
Knowledge base article
Contents (89 sections)

Welcome to the ultimate guide to mastering Apache, the world's most popular web server. Whether you're a beginner exploring its core features or a seasoned admin diving into advanced configurations, this comprehensive handbook has you covered. From virtual hosts to performance optimization, and from security best practices to real-world use cases, this guide is your one-stop resource for everything Apache.

Table of Contents:

1. Introduction to Apache

  • What is Apache: Overview of the Apache HTTP Server
  • History & Evolution: From inception to modern-day relevance
  • Importance: Why Apache dominates web hosting

2. Installing Apache

  • Linux Installation: Step-by-step for Debian, Ubuntu, CentOS
  • Windows Installation: Installation made simple
  • Verification: Ensure your Apache is up and running

3. Understanding Apache Configuration

  • Configuration Files: Exploring httpd.conf and apache2.conf
  • Directory Structure: Key folders and their roles
  • Essential Settings: Customizing basic options

4. Key Features of Apache

  • Virtual Hosts: Multi-site hosting made easy
  • Modularity: Exploring modules like mod_ssl, mod_rewrite
  • Security: Built-in features for safe operations
  • Logs & Monitoring: Tracking and analyzing server activity

5. Advanced Apache Configuration

  • Performance Tuning: Boosting efficiency and speed
  • Compression: Enabling Gzip/Deflate for faster loads
  • Load Balancing: Using mod_proxy_balancer effectively
  • SSL Configuration: Securing your sites with HTTPS

6. Customizing Apache with Modules

  • Managing Modules: How to enable/disable modules
  • Popular Picks: Top modules for different needs
  • Deep Dive: Advanced uses of specific modules

7. Working with Virtual Hosts

  • What Are Virtual Hosts: An introduction
  • Creating Virtual Hosts: Step-by-step guide
  • Best Practices: Tips for multi-domain hosting

8. Security Best Practices

  • Configuring Firewalls: Keeping Apache secure
  • Hardening Apache: Mitigating vulnerabilities
  • Secure Headers: Protecting HTTP communication
  • ModSecurity: Advanced threat protection

9. Performance Optimization

  • Caching: Boosting speed with mod_cache
  • Optimizing Connections: Tuning threads and processes
  • CDN Integration: Reducing server load effectively

10. Debugging and Troubleshooting

  • Common Errors: Diagnosing and resolving issues
  • Log Analysis: Access and error logs explained
  • Performance Issues: Identifying and fixing bottlenecks

11. Integrating Apache with Other Technologies

  • Apache + PHP: Best practices for seamless integration
  • Apache + Python: Setting up mod_wsgi
  • Reverse Proxy: Connecting with Node.js

12. Migration and Upgrading

  • Switching to Apache: Migrating from other servers
  • Upgrading: Keeping Apache up-to-date
  • Backup Strategies: Ensuring a safe upgrade

13. Monitoring and Maintenance

  • Tools: Monitoring Apache with Nagios, Zabbix, and more
  • Automation: Scripts for routine maintenance
  • Backup & Recovery: Preparing for the unexpected

14. Advanced Topics

  • Dynamic Content: Using mod_cgi and mod_fcgi
  • Reverse Proxy: Setting up for microservices
  • .htaccess: Custom rules for specific needs

15. Real-World Use Cases

  • Multi-Site Hosting: Managing complex environments
  • Reverse Proxy Setup: For applications and APIs
  • Case Studies: High-traffic websites powered by Apache

16. Resources and Further Reading

  • Official Docs: Dive deeper into Apache's features
  • Community Forums: Get help from fellow developers
  • Tutorials & Books: Recommended learning materials

17. Conclusion

  • Recap: What you've learned
  • Explore More: Encouragement to experiment
  • Join the Community: Become part of the Apache ecosystem

1. Introduction to Apache

What is Apache

Apache HTTP Server, often referred to simply as Apache, is an open-source, cross-platform web server software.

  • Core Functionality: It facilitates communication between a web browser (client) and a server, serving web pages to users over the HTTP/HTTPS protocol.
  • Key Features: Highly customizable, supports multiple languages, and integrates seamlessly with PHP, Python, and other technologies.
  • Popularity: As of today, Apache powers millions of websites globally, thanks to its reliability and scalability.

History & Evolution

  • Birth: Apache was launched in 1995 as a free alternative to the Netscape web server.
  • Name Origin: The name "Apache" stems from the Native American Apache tribe, symbolizing resilience and teamwork.
  • Milestones:
    • 1996: Became the most popular web server.
    • 2000s: Introduced modular architecture and advanced features like virtual hosts.
    • 2020s: Continues evolving with security updates and enhanced performance.

Importance

  • Dominance in Web Hosting: Known for its modularity and flexibility, Apache remains the backbone for hosting providers.
  • Compatibility: Works seamlessly across Linux, Windows, and macOS.
  • Customizability: Offers a plethora of modules and configuration options, making it ideal for personal blogs to enterprise-level applications.

2. Installing Apache

Linux Installation: Step-by-Step for Debian, Ubuntu, CentOS

1. Update the system packages:
sudo apt update && sudo apt upgrade -y
sudo yum update -y

2. Install Apache:
For Debian/Ubuntu: sudo apt install apache2 -y
For CentOS/RHEL: sudo yum install httpd -y

3. Enable and start Apache:
sudo systemctl enable apache2 && sudo systemctl start apache2
For CentOS/RHEL: sudo systemctl enable httpd && sudo systemctl start httpd

4. Verify installation:
Visit http://your_server_ip in a browser. A default Apache welcome page confirms success.

Windows Installation: Installation Made Simple

1. Download Apache: Visit the Apache Lounge to get the Windows binaries.

2. Install prerequisites: Ensure the Visual C++ Redistributable is installed.

3. Configure Apache: Extract the downloaded files, and edit the httpd.conf file to set ServerRoot and DocumentRoot.

4. Start Apache: Use the httpd.exe file in the bin folder to start the server.

5. Verify installation: Open a browser and navigate to http://localhost.

Verification

After installation, verify that Apache is running:

  • Linux: sudo systemctl status apache2 or sudo systemctl status httpd
  • Windows: Ensure no errors are shown in the command prompt when running httpd.exe.

3. Understanding Apache Configuration

Configuration Files

  • httpd.conf: The main configuration file for Apache. Located at /etc/httpd/conf/httpd.conf (CentOS) or /etc/apache2/apache2.conf (Ubuntu).
  • Modular Design: Allows configurations to be split into smaller files (sites-available, mods-enabled) for easier management.
  • Key Parameters:
    • ServerRoot: Specifies the root directory for Apache files.
    • DocumentRoot: Specifies the directory containing website files.
    • Listen: Defines the port Apache listens on (default: 80 for HTTP).

Directory Structure

  • /etc/apache2/: Main directory for Ubuntu. Includes configuration files like apache2.conf.
  • /etc/httpd/: Main directory for CentOS. Contains conf and conf.d folders for settings.
  • /var/www/html/: Default location for website files.

Essential Settings

To customize Apache, modify the following parameters in the configuration files:

1. Set the ServerName:
ServerName your_domain.com

2. Enable directory indexing:
Options +Indexes

3. Disable directory listing:
Options -Indexes

4. Set custom error pages:
ErrorDocument 404 /404.html

5. Change the default port:
Listen 8080

After making changes, restart Apache to apply them:

  • Linux: sudo systemctl restart apache2 or sudo systemctl restart httpd.
  • Windows: Restart httpd.exe in the command prompt.

4. Key Features of Apache

Virtual Hosts: Multi-Site Hosting Made Easy

  • Overview: Apache Virtual Hosts allow you to host multiple websites on a single server, each with its unique domain name and configuration.
  • Types:
    • Name-based: Different domains share the same IP.
    • IP-based: Each domain has a unique IP address.
  • Basic Virtual Host Setup:
markup
<VirtualHost *:80>
 ServerName example.com
 DocumentRoot /var/www/example.com
</VirtualHost>
  • Modularity: Exploring Modules Like mod_ssl, mod_rewrite

    • Apache Modules: Extend Apache's functionality with add-ons like:
      • mod_ssl: Enables SSL for secure connections.
      • mod_rewrite: Allows URL rewriting for clean, SEO-friendly URLs.
      • mod_proxy: Implements reverse proxy functionality.
    • Customizing Modules: Add or remove modules as needed using commands like:
      • Enable: sudo a2enmod mod_name
      • Disable: sudo a2dismod mod_name

    Security: Built-in Features for Safe Operations

    • Authentication Mechanisms: Supports basic and digest authentication.
    • Access Control: Restrict access to specific IPs or directories using directives like Require and Deny.
    • SSL/TLS: Easily configure HTTPS to secure communication.
    • Secure HTTP Headers: Add headers for additional security:
  • markup
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "DENY"
    
  • Logs & Monitoring: Tracking and Analyzing Server Activity

    • Access Logs: Tracks incoming requests (/var/log/apache2/access.log).
    • Error Logs: Logs errors and issues (/var/log/apache2/error.log).
    • Custom Logging: Configure your own logging format:
  • markup
    LogFormat "%h %l %u %t \"%r\" %>s %b" custom_log
    CustomLog /var/log/apache2/custom_access.log custom_log
    

    5. Advanced Apache Configuration

    Performance Tuning: Boosting Efficiency and Speed

    • Maximize Connections: Adjust MaxKeepAliveRequests and KeepAliveTimeout in httpd.conf.
    • Worker MPM: Use the worker or event Multi-Processing Modules (MPMs) for high-concurrency environments:
    markup
    <IfModule mpm_worker_module>
     StartServers 4
     MinSpareThreads 25
     MaxSpareThreads 75
     ThreadsPerChild 25
     MaxRequestWorkers 150
    </IfModule>
    
  • Compression: Enabling Gzip/Deflate for Faster Loads

    • Why Compression Reduces file sizes for faster page loads.
    • Enable Compression:
  • markup
    <IfModule mod_deflate.c>
     AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
    </IfModule>
    
  • Load Balancing: Using mod_proxy_balancer Effectively

    • Overview: Distribute traffic evenly across multiple servers for scalability.
    • Configuration:
  • markup
    <Proxy "balancer://mycluster">
     BalancerMember http://server1.example.com
     BalancerMember http://server2.example.com
    </Proxy>
    ProxyPass "/" "balancer://mycluster/"
    ProxyPassReverse "/" "balancer://mycluster/"
    
  • SSL Configuration: Securing Your Sites with HTTPS

    • Steps:
      1. Install SSL module: sudo a2enmod ssl.
      2. Configure the Virtual Host for HTTPS:
  • markup
    <VirtualHost *:443>
     ServerName example.com
     DocumentRoot /var/www/example.com
     SSLEngine on
     SSLCertificateFile /etc/ssl/certs/example.com.crt
     SSLCertificateKeyFile /etc/ssl/private/example.com.key
    </VirtualHost>
    

    6. Customizing Apache with Modules

    Managing Modules: How to Enable/Disable Modules

    • Enable a Module: sudo a2enmod mod_name
    • Disable a Module: sudo a2dismod mod_name
    • List Active Modules: apachectl -M
    • mod_ssl: Secures connections with HTTPS.
    • mod_rewrite: Enables URL rewriting for dynamic and static URLs.
    • mod_proxy: Implements reverse proxy capabilities.
    • mod_cache: Improves performance with caching mechanisms.
    • mod_headers: Adds custom headers for enhanced control.

    Deep Dive: Advanced Uses of Specific Modules

    • mod_rewrite for SEO-Friendly URLs:
    markup
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [L]
    
  • mod_headers for Enhanced Security:
  • markup
    Header always append X-Frame-Options SAMEORIGIN
    Header always set Content-Security-Policy "default-src 'self';"
    
  • mod_proxy for Reverse Proxy Setup:
  • markup
    ProxyPass /app http://localhost:3000/
    ProxyPassReverse /app http://localhost:3000/
    

    7. Working with Virtual Hosts

    What Are Virtual Hosts An Introduction

    • Definition: Virtual Hosts allow multiple websites to be hosted on a single server, each with its own domain name, configurations, and directory structure.
    • Use Cases:
      • Hosting multiple websites on one server.
      • Assigning different domains to specific subdirectories or applications.
    • Types of Virtual Hosts:
      • Name-Based: Differentiates sites using the ServerName or ServerAlias.
      • IP-Based: Requires unique IP addresses for each host.

    Creating Virtual Hosts: Step-by-Step Guide

    1. Enable Virtual Hosts:

    • On Debian/Ubuntu: Ensure the sites-enabled and sites-available directories are configured.

    2. Create a Virtual Host File:

    • Example file for example.com:
    markup
    <VirtualHost *:80>
     ServerName example.com
     ServerAlias www.example.com
     DocumentRoot /var/www/example.com
     ErrorLog ${APACHE_LOG_DIR}/example_error.log
     CustomLog ${APACHE_LOG_DIR}/example_access.log combined
    </VirtualHost>
    

    3. Enable the Virtual Host:

    • Run: sudo a2ensite example.com.conf

    4. Restart Apache:

    • Run: sudo systemctl restart apache2

    5. Test Configuration:

    • Access the domain in a browser or test with: curl http://example.com.

    Best Practices: Tips for Multi-Domain Hosting

    • Use unique directories for each domain (/var/www/domain1.com).
    • Set meaningful log file names for each Virtual Host.
    • Utilize SSL/TLS for secure communication.
    • Test each Virtual Host configuration using apachectl configtest.

    8. Security Best Practices

    Configuring Firewalls: Keeping Apache Secure

    • Block unauthorized access by limiting open ports (e.g., 80 and 443 for HTTP/HTTPS).
    • Use ufw or iptables to set rules:
    markup
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp
    sudo ufw enable
    
  • Hardening Apache: Mitigating Vulnerabilities

    • Disable Unnecessary Modules: Disable unused modules to minimize attack surfaces:
  • markup
    sudo a2dismod autoindex
    sudo a2dismod status
    
  • Disable Server Signature and Version: Prevent attackers from gaining server information:
  • markup
    ServerSignature Off
    ServerTokens Prod
    
  • Secure Headers: Protecting HTTP Communication

    • Add headers for enhanced security:
  • markup
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Content-Security-Policy "default-src 'self';"
    
  • ModSecurity: Advanced Threat Protection

    • Install ModSecurity for proactive threat protection:
  • markup
    sudo apt install libapache2-mod-security2
    sudo a2enmod security2
    
  • Use OWASP rules for enhanced security:
  • markup
    SecRuleEngine On
    Include /usr/share/modsecurity-crs/crs-setup.conf
    Include /usr/share/modsecurity-crs/rules/*.conf
    

    9. Performance Optimization

    Caching: Boosting Speed with mod_cache

    • Enable caching to improve response times:
    markup
    sudo a2enmod cache
    sudo a2enmod cache_disk
    
  • Configure caching in Virtual Host:
  • markup
    <IfModule mod_cache.c>
     CacheQuickHandler off
     CacheEnable disk /
     CacheRoot /var/cache/apache2
    </IfModule>
    

    Optimizing Connections: Tuning Threads and Processes

    • Use worker or event MPM for better concurrency:
    markup
    <IfModule mpm_event_module>
     StartServers 4
     MinSpareThreads 50
     MaxSpareThreads 200
     ThreadsPerChild 25
     MaxRequestWorkers 300
    </IfModule>
    

    CDN Integration: Reducing Server Load Effectively

    • Use Content Delivery Networks (CDNs) to offload traffic:
      • Examples: Cloudflare, Akamai, or AWS CloudFront.
    • Update DNS to point static assets to the CDN.
    • Leverage mod_expires for efficient caching headers:
    markup
    <IfModule mod_expires.c>
     ExpiresActive On
     ExpiresByType text/css "access plus 1 week"
     ExpiresByType image/jpg "access plus 1 month"
    </IfModule>
    

    10. Debugging and Troubleshooting

    Common Errors: Diagnosing and Resolving Issues

    • Error 403 Forbidden: Check permissions and ownership:
    markup
    sudo chmod -R 755 /var/www/html
    sudo chown -R www-data:www-data /var/www/html
    
  • Error 404 Not Found: Verify DocumentRoot paths in Virtual Hosts
  • markup
    DocumentRoot /var/www/example.com
    
    • Error 500 Internal Server Error: Review .htaccess rules for syntax issues or check logs at /var/log/apache2/error.log.

    Log Analysis: Access and Error Logs Explained

    • Access Logs: Provides details about incoming requests. Example::
    markup
    192.168.1.1 - - [07/Dec/2024:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 2326
    
    • Path: /var/log/apache2/access.log or /var/log/httpd/access_log.
  • Error Logs: Tracks server issues. Look for keywords like error or warn.
    • Path: /var/log/apache2/error.log or /var/log/httpd/error_log.
  • Use grep to filter logs:
  • markup
    grep "404" /var/log/apache2/access.log
    
  • Performance Issues: Identifying and Fixing Bottlenecks

    • Use tools like top or htop to check resource usage.
    • Enable server-status for real-time monitoring:
  • markup
    <Location "/server-status">
     SetHandler server-status
     Require host yourdomain.com
    </Location>
    
  • Review KeepAlive settings to optimize connections:
  • markup
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 5
    

    11. Integrating Apache with Other Technologies

    Apache + PHP: Best Practices for Seamless Integration

    • Install and enable PHP
    markup
    sudo apt install php libapache2-mod-php
    sudo systemctl restart apache2
    
  • Test PHP integration with a sample script:
  • markup
    <php
    phpinfo();
    >
    
    • Save this as info.php in your DocumentRoot.

    Apache + Python: Setting Up mod_wsgi

    • Install mod_wsgi and Python:
    markup
    sudo apt install libapache2-mod-wsgi-py3 python3
    
  • Configure mod_wsgi in Virtual Hosts:
  • markup
    <VirtualHost *:80>
     ServerName example.com
     WSGIScriptAlias / /var/www/example/app.wsgi
     <Directory /var/www/example>
     Require all granted
     </Directory>
    </VirtualHost>
    
  • Reverse Proxy: Connecting with Node.js

    • Enable mod_proxy and mod_proxy_http:
  • markup
    sudo a2enmod proxy proxy_http
    sudo systemctl restart apache2
    
  • Configure Reverse Proxy:
  • markup
    <VirtualHost *:80>
     ServerName example.com
     ProxyPass / http://localhost:3000/
     ProxyPassReverse / http://localhost:3000/
    </VirtualHost>
    

    12. Migration and Upgrading

    Switching to Apache: Migrating from Other Servers

    • From Nginx:
      • Translate Nginx configuration (nginx.conf) to Apache Virtual Hosts.
      • Use online tools for syntax conversion or rewrite manually.
    • From IIS:
      • Export site configurations and migrate static files to Apache's DocumentRoot.

    Upgrading: Keeping Apache Up-to-Date

    • On Ubuntu/Debian:
    markup
    sudo apt update && sudo apt upgrade apache2
    
  • On CentOS/RHEL:
  • markup
    sudo yum update httpd
    
  • Restart the server after upgrading:
  • markup
    sudo systemctl restart apache2
    
  • Backup Strategies: Ensuring a Safe Upgrade

    • Backup key configuration files:
  • markup
    sudo cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.bak
    sudo cp -R /var/www/ /var/www.bak
    
  • Use tools like rsync for a comprehensive backup:
  • markup
    rsync -avz /var/www/ /backup/apache_backup/
    
    • Test the upgrade in a staging environment before applying it to production.

    13. Monitoring and Maintenance

    Tools: Monitoring Apache with Nagios, Zabbix, and More

    • Nagios:
      • Monitors Apache services, traffic, and uptime.
      • Configure check_http plugin to monitor HTTP response times:
    markup
    /usr/local/nagios/libexec/check_http -H yourdomain.com
    
  • Zabbix:
    • Offers detailed insights into Apache metrics, such as active connections and requests per second.
    • Use the Zabbix Apache template to visualize performance.
  • Other Tools:
    • Prometheus + Grafana: Collects and visualizes metrics in real-time.
    • Apache server-status: Native monitoring tool:
  • markup
    http://yourdomain.com/server-status
    
  • Automation: Scripts for Routine Maintenance

    • Log Rotation: Automate log cleanup with logrotate:
  • markup
    /var/log/apache2/*.log {
     weekly
     missingok
     rotate 4
     compress
     delaycompress
     notifempty
     create 640 root adm
    }
    

    Restart Apache Periodically: Create a cron job for scheduled restarts:

    markup
    0 3 * * * sudo systemctl restart apache2
    

    Script for Checking Uptime:

    markup
    #!/bin/bash
    if systemctl is-active --quiet apache2; then
     echo "Apache is running"
    else
     echo "Restarting Apache..."
     systemctl restart apache2
    fi
    

    Backup & Recovery: Preparing for the Unexpected

    • Backup Configuration Files:
    markup
    tar -cvzf apache_config_backup.tar.gz /etc/apache2/
    
  • Backup Website Data:
  • markup
    rsync -avz /var/www/ /backup/website_backup/
    
  • Restore Backup:
  • markup
    tar -xvzf apache_config_backup.tar.gz -C /etc/apache2/
    rsync -avz /backup/website_backup/ /var/www/
    
  • Test backups regularly in a staging environment.

  • 14. Advanced Topics

    Dynamic Content: Using mod_cgi and mod_fcgi

    • mod_cgi: Enables execution of CGI scripts
    markup
    <Directory "/var/www/cgi-bin">
     Options +ExecCGI
     AddHandler cgi-script .cgi .pl
    </Directory>
    
  • mod_fcgi: Offers better performance than mod_cgi by handling persistent processes. Enable it:
  • markup
    sudo a2enmod fcgid
    
  • Configure in Virtual Hosts:
  • markup
    <IfModule mod_fcgid.c>
     AddHandler fcgid-script .fcgi
     FcgidMaxProcesses 20
    </IfModule>
    
  • Reverse Proxy: Setting Up for Microservices

    • Reverse proxy configuration for forwarding requests to backend services:
  • markup
    <VirtualHost *:80>
     ProxyPass /api http://backend_server:5000/
     ProxyPassReverse /api http://backend_server:5000/
    </VirtualHost>
    

    .htaccess: Custom Rules for Specific Needs

    Redirects: Create SEO-friendly URL redirects:

    markup
    RewriteEngine On
    RewriteRule ^old-page.html$ /new-page.html [R=301,L]
    
    • Password Protection: Add basic authentication:
    markup
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /path/to/.htpasswd
    Require valid-user
    

    15. Real-World Use Cases

    Multi-Site Hosting: Managing Complex Environments

    • Use Apache Virtual Hosts to host multiple websites:
    markup
    <VirtualHost *:80>
     ServerName site1.com
     DocumentRoot /var/www/site1
    </VirtualHost>
    <VirtualHost *:80>
     ServerName site2.com
     DocumentRoot /var/www/site2
    </VirtualHost>
    
    • Assign unique log files for easier debugging.
  • Reverse Proxy Setup: For Applications and APIs

    • Apache as a reverse proxy for an API backend:
  • markup
    <VirtualHost *:443>
     ProxyPreserveHost On
     ProxyPass /api http://127.0.0.1:4000/
     ProxyPassReverse /api http://127.0.0.1:4000/
    </VirtualHost>
    

    Case Studies: High-Traffic Websites Powered by Apache

    • Examples:
      • Wikipedia: Uses Apache for its modularity.
      • Facebook (early days): Relied on Apache before transitioning to custom solutions.
      • Government Websites: Many government portals leverage Apache's reliability.

    16. Resources and Further Reading

    Official Docs: Dive Deeper into Apache's Features

    Community Forums: Get Help from Fellow Developers

    • Apache User Mailing List: Stay updated with best practices.
    • Stack Overflow: Troubleshoot and find solutions for common Apache issues.

    17. Conclusion

    Recap: What You've Learned

    • Covered Apache's key features, advanced configurations, integrations, and real-world applications.

    Explore More: Encouragement to Experiment

    • Experiment with modules like mod_rewrite, mod_proxy, and advanced .htaccess rules.

    Join the Community: Become Part of the Apache Ecosystem

    • Contribute to the Apache project, share insights on forums, and stay engaged with updates.

    Note: CentOS has reached end-of-life. If you are setting up a new server, we recommend using AlmaLinux or Rocky Linux as a drop-in replacement. The commands and procedures in this article apply equally to AlmaLinux and Rocky Linux.

    Was this article helpful?

    Your answer helps us decide what to improve next.

    Still need help? Open a support ticket and our team will reply.

    Prefer an app? Add this site to your home screen.Get the app
    Mastering Apache: An In-depth Guide to Key Features and Advanced Techniques - Knowledge Base