{"id":13723,"date":"2025-12-20T10:19:20","date_gmt":"2025-12-20T04:49:20","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=13723"},"modified":"2025-12-20T10:19:22","modified_gmt":"2025-12-20T04:49:22","slug":"how-to-optimize-apache-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/how-to-optimize-apache-on-linux-server","title":{"rendered":"How to Optimize Apache on Linux Server &#8211; Easy Guide"},"content":{"rendered":"\n<p>To optimize Apache on a Linux server, use the event MPM with PHP-FPM, enable HTTP\/2 and Brotli\/Gzip, tune KeepAlive and MaxRequestWorkers to your RAM\/CPU, cache static assets with proper Cache-Control, compress and minimize TLS overhead, monitor via mod_status, and validate with load testing. Secure, logrotate, and review regularly.<\/p>\n\n\n\n<p>Optimizing Apache on a Linux server means tuning modules, connection handling, caching, and operating system limits to match your workload. In this guide, I\u2019ll show you how to optimize Apache on Linux server environments step-by-step, using safe defaults, practical formulas, and commands you can apply on Ubuntu\/Debian and RHEL\/CentOS\/AlmaLinux.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"understand-your-stack-and-goals\"><strong>Understand Your Stack and Goals<\/strong><\/h2>\n\n\n\n<p>Before changing settings, identify what you\u2019re serving and where the bottleneck is: static files, PHP\/WordPress, APIs, or file downloads. Your optimization path differs for TLS-heavy traffic, chatty APIs, or content sites.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"baseline-and-monitor\"><strong>Baseline and Monitor<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Check current Apache build and MPM: apachectl -V<\/li>\n\n\n\n<li>Monitor resources: top\/htop, free -m, iostat, ss -s<\/li>\n\n\n\n<li>Enable server-status: mod_status for live concurrency and scoreboard<\/li>\n\n\n\n<li>Benchmark: ab, wrk, or siege to simulate realistic concurrency<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Enable mod_status (Debian\/Ubuntu)\nsudo a2enmod status\necho \"&lt;Location \/server-status&gt;\n    SetHandler server-status\n    Require ip 203.0.113.0\/24\n&lt;\/Location&gt;\" | sudo tee \/etc\/apache2\/conf-available\/status.conf\nsudo a2enconf status\nsudo systemctl reload apache2\n\n# RHEL\/AlmaLinux (httpd)\n\/usr\/lib64\/httpd\/modules\/mod_status.so is built-in or loadable\n# Add in a vhost or conf.d\/status.conf:\n# &lt;Location \/server-status&gt;SetHandler server-status Require ip 203.0.113.0\/24&lt;\/Location&gt;\nsudo systemctl reload httpd<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"pick-the-right-mpm-event-vs-worker-vs-prefork\"><strong>Pick the Right MPM: event vs worker vs prefork<\/strong><\/h2>\n\n\n\n<p>Apache\u2019s Multi-Processing Module (MPM) dictates concurrency. For most modern sites (especially PHP via PHP-FPM), use event MPM. Prefork is legacy and needed only if you run non-thread-safe modules like mod_php (which you should avoid in favor of PHP-FPM).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"switch-to-event-mpm-and-php-fpm\"><strong>Switch to event MPM and PHP-FPM<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian\/Ubuntu: switch to event MPM and PHP-FPM\nsudo a2dismod mpm_prefork\nsudo a2enmod mpm_event proxy_fcgi setenvif http2 headers deflate\nsudo a2enconf php8.2-fpm  # adjust your <a href=\"https:\/\/www.youstable.com\/blog\/how-to-change-php-version-in-cpanel\/\">PHP version<\/a>\nsudo systemctl restart php8.2-fpm\nsudo systemctl restart apache2\n\n# RHEL\/AlmaLinux\nsudo dnf install php-fpm\nsudo systemctl enable --now php-fpm\n# Ensure httpd uses event MPM (default on newer releases)\nhttpd -V | grep -i mpm\n# In vhost, pass PHP to FPM:\n# &lt;FilesMatch \\.php$&gt;SetHandler \"proxy:unix:\/run\/php-fpm\/www.sock|fcgi:\/\/localhost\/\"&lt;\/FilesMatch&gt;\nsudo systemctl restart httpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"tune-event-mpm-for-your-ram-cpu\"><strong>Tune event MPM for Your RAM\/CPU<\/strong><\/h3>\n\n\n\n<p>Goal: prevent swapping by setting MaxRequestWorkers to the maximum concurrent Apache threads your RAM can handle.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Estimate per-request memory: watch RES in top for apache2\/httpd under load (e.g., 30\u201380 MB with PHP).<\/li>\n\n\n\n<li>Formula: MaxRequestWorkers \u2248 (Available RAM for Apache) \u00f7 (Average Apache+PHP memory per request).<\/li>\n\n\n\n<li>Keep 30\u201340% RAM for MySQL\/Redis\/OS cache.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Example event MPM (Debian\/Ubuntu: \/etc\/apache2\/mods-available\/mpm_event.conf)\n# Example for 4 vCPU, 8 GB RAM, PHP-FPM workload where each request \u2248 60 MB\n# Budget 4.5 GB for Apache: 4500 MB \/ 60 \u2248 75 workers (round down to 64 or 72)\n&lt;IfModule mpm_event_module&gt;\n    StartServers             2\n    ServerLimit              8\n    ThreadsPerChild         25\n    ThreadLimit             64\n    MaxRequestWorkers      200    # Threads = ServerLimit * ThreadsPerChild (cap at your calculation)\n    MinSpareThreads         75\n    MaxSpareThreads        150\n    MaxConnectionsPerChild 3000   # Recycle to mitigate leaks\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<p>Adjust ServerLimit \u00d7 ThreadsPerChild to meet your target MaxRequestWorkers without exceeding available memory.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-http-2-h2-priorities-and-tls-optimizations\"><strong>Enable HTTP\/2, H2 Priorities, and TLS Optimizations<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"turn-on-http-2\"><strong>Turn on HTTP\/2<\/strong><\/h3>\n\n\n\n<p>HTTP\/2 reduces latency via multiplexing and header compression. Ensure your vhost is SSL-enabled with a strong certificate.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian\/Ubuntu\nsudo a2enmod http2 headers ssl\n# In your SSL vhost:\nProtocols h2 http\/1.1\nH2Push          off\nH2Direct        on\n# Reload\nsudo systemctl reload apache2\n\n# RHEL\/AlmaLinux\n# LoadModule http2_module modules\/mod_http2.so\n# In SSL vhost:\nProtocols h2 http\/1.1\nsudo systemctl reload httpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-compression-brotli-best-or-gzip\"><strong>Enable Compression: Brotli (best) or Gzip<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Brotli (preferred if available)\nsudo a2enmod brotli || true\n# Add globally or in vhost:\nAddOutputFilterByType BROTLI_COMPRESS text\/html text\/plain text\/css text\/javascript application\/javascript application\/json image\/svg+xml\n\n# Fallback to Gzip (mod_deflate)\nsudo a2enmod deflate\nAddOutputFilterByType DEFLATE text\/html text\/plain text\/css text\/javascript application\/javascript application\/json image\/svg+xml\n\n# Avoid double-compressing already compressed formats\nSetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png|webp|avif|zip|gz|bz2|rar|7z|mp4|mp3|woff2?)$ no-gzip dont-vary<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"tls-settings-that-save-cpu\"><strong>TLS Settings That Save CPU<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Example TLS for performance and security (in SSL vhost or ssl.conf)\nSSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1\nSSLCipherSuite          TLS-CHACHA20-POLY1305-SHA256:TLS-AES-256-GCM-SHA384:TLS-AES-128-GCM-SHA256\nSSLHonorCipherOrder     off\nSSLCompression          off\nSSLSessionCache         shmcb:\/var\/run\/apache2\/ssl_scache(512000)\nSSLSessionCacheTimeout  300\nSSLOpenSSLConfCmd       Curves X25519:secp256r1<\/code><\/pre>\n\n\n\n<p>Session resumption and modern ciphers reduce CPU per handshake. Use <a href=\"https:\/\/www.youstable.com\/blog\/what-is-lets-encrypt-on-linux-server\/\">Let\u2019s Encrypt<\/a> with auto-renewal for minimal maintenance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"tune-keepalive-timeouts-and-request-limits\"><strong>Tune KeepAlive, Timeouts, and Request Limits<\/strong><\/h2>\n\n\n\n<p>KeepAlive improves performance but can exhaust workers if set too high. For HTTP\/2 you can often allow shorter KeepAliveTimeout due to multiplexing.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># In apache2.conf or httpd.conf\nKeepAlive On\nMaxKeepAliveRequests 100\nKeepAliveTimeout 2\n\n# Timeouts to protect from slowloris and hanging backends\nTimeout 30\nRequestReadTimeout header=10-20,MinRate=500 body=20,MinRate=500\n\n# Size limits (protect resources)\nLimitRequestBody 10485760   # 10 MB (adjust for your app)\nLimitRequestFields 100\nLimitRequestFieldSize 16384<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"caching-and-static-asset-optimization\"><strong>Caching and Static Asset Optimization<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"leverage-browser-caching\"><strong>Leverage Browser Caching<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># mod_expires \/ mod_headers\nsudo a2enmod <a href=\"https:\/\/www.youstable.com\/blog\/how-to-add-expires-headers\/\">expires headers<\/a>\n# In a global conf or vhost:\nExpiresActive On\nExpiresByType text\/css \"access plus 30 days\"\nExpiresByType application\/javascript \"access plus 30 days\"\nExpiresByType image\/webp \"access plus 90 days\"\nExpiresByType image\/png \"access plus 90 days\"\nHeader append Cache-Control \"public\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"optional-server-side-caching-for-dynamic-pages\"><strong>Optional: Server-Side Caching for Dynamic Pages<\/strong><\/h3>\n\n\n\n<p>Use Apache\u2019s mod_cache for page or fragment caching when your app allows it. For WordPress, pair with a page cache plugin or reverse proxy\/CDN.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Disk cache example\nsudo a2enmod cache cache_disk\nCacheQuickHandler on\nCacheEnable disk \"\/\"\nCacheRoot \/var\/cache\/apache2\/mod_cache_disk\nCacheIgnoreCacheControl On\nCacheDefaultExpire 600\nCacheMaxFileSize 10000000<\/code><\/pre>\n\n\n\n<p>Always test cache rules to avoid serving private content. Consider a CDN for global delivery; it offloads bandwidth and TLS handshakes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"optimize-php-handling-with-php-fpm\"><strong>Optimize PHP Handling with PHP-FPM<\/strong><\/h2>\n\n\n\n<p>PHP-FPM performs best with event MPM. Configure the pool for your concurrency and memory budget.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># PHP-FPM pool (\/etc\/php\/8.2\/fpm\/pool.d\/www.conf)\npm = dynamic\npm.max_children = 60        # Match your MaxRequestWorkers and memory\npm.start_servers = 6\npm.min_spare_servers = 6\npm.max_spare_servers = 12\npm.max_requests = 500       # Recycle to avoid memory leaks\n\n# Enable OPcache (\/etc\/php\/8.2\/fpm\/php.ini)\nopcache.enable=1\nopcache.memory_consumption=256\nopcache.interned_strings_buffer=16\nopcache.max_accelerated_files=10000<\/code><\/pre>\n\n\n\n<p>Map PHP to FPM via ProxyPassMatch or FilesMatch, and confirm sockets\/ports align. Watch FPM\u2019s slow log to spot bottlenecks in plugins or themes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"logging-rotation-and-observability\"><strong>Logging, Rotation, and Observability<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"right-size-logs\"><strong>Right-Size Logs<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Use combined log and rotate\nLogFormat \"%h %l %u %t \\\"%r\\\" %&gt;s %b \\\"%{Referer}i\\\" \\\"%{User-Agent}i\\\"\" combined\nCustomLog \/var\/log\/apache2\/access.log combined\nErrorLog  \/var\/log\/apache2\/error.log\nLogLevel  warn\n\n# Ensure logrotate (Debian\/Ubuntu: \/etc\/logrotate.d\/apache2)\nsudo logrotate -f \/etc\/logrotate.conf<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"test-under-load\"><strong>Test Under Load<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Basic wrk example (install wrk first)\nwrk -t4 -c100 -d60s --latency https:\/\/example.com\/\n\n# ApacheBench (ab)\nab -k -n 10000 -c 200 https:\/\/example.com\/<\/code><\/pre>\n\n\n\n<p>Compare latency percentiles and error rates before and after changes. Use mod_status to confirm you\u2019re not exhausting workers.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"os-level-tuning-for-high-concurrency\"><strong>OS-Level Tuning for High Concurrency<\/strong><\/h2>\n\n\n\n<p>Linux defaults are conservative. Increase file descriptors and network backlog when you serve thousands of concurrent connections.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Increase file descriptors\n# \/etc\/security\/limits.d\/99-apache.conf\nwww-data soft nofile 65536\nwww-data hard nofile 65536\n\n# Kernel networking (e.g., \/etc\/sysctl.d\/99-web.conf)\nnet.core.somaxconn = 4096\nnet.ipv4.tcp_fin_timeout = 30\nnet.ipv4.tcp_tw_reuse = 1\nnet.ipv4.ip_local_port_range = 1024 65535\nnet.ipv4.tcp_max_syn_backlog = 4096\nfs.file-max = 2097152\nsudo sysctl --system<\/code><\/pre>\n\n\n\n<p>Replace www-data with apache on RHEL-based systems. Validate with ulimit -n under the Apache worker process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"security-hardening-that-also-saves-cpu\"><strong>Security Hardening That Also Saves CPU<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable a WAF: mod_security with a tuned ruleset (disable high-cost rules you don\u2019t need).<\/li>\n\n\n\n<li>Rate-limiting\/DoS mitigation: mod_evasive or a CDN\u2019s edge firewall.<\/li>\n\n\n\n<li>Block abusive bots with RewriteCond on User-Agent\/IP lists.<\/li>\n\n\n\n<li>Disable and remove unused modules to reduce attack surface and memory.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Simple bot throttle with mod_evasive (example)\n\/etc\/httpd\/conf.d\/mod_evasive.conf or \/etc\/apache2\/mods-available\/evasive.conf\nDOSHashTableSize 3097\nDOSPageCount 5\nDOSPageInterval 1\nDOSSiteCount 100\nDOSSiteInterval 1\nDOSBlockingPeriod 10<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"maintenance-checklist\"><strong>Maintenance Checklist<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Patch Apache, OpenSSL, and PHP regularly.<\/li>\n\n\n\n<li>Review mod_status weekly; adjust MaxRequestWorkers and FPM pool sizes.<\/li>\n\n\n\n<li>Rotate and compress logs; prevent disk fill.<\/li>\n\n\n\n<li>Audit vhosts and .htaccess for expensive rewrites.<\/li>\n\n\n\n<li>Use a staging environment to test changes and updates.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"when-to-consider-managed-hosting\"><strong>When to Consider Managed Hosting<\/strong><\/h2>\n\n\n\n<p>If you\u2019d rather focus on your app than kernel and MPM tuning, a managed stack helps. At YouStable, we optimize Apache on Linux with event MPM, PHP-FPM, HTTP\/2, Brotli, and OS-level tuning, then validate with benchmarks and 24\u00d77 monitoring. It\u2019s a safe path to predictable performance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"practical-end-to-end-example-wordpress-on-ubuntu\"><strong>Practical End-to-End Example (WordPress on Ubuntu)<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Switch to event MPM and PHP-FPM, disable prefork\/mod_php.<\/li>\n\n\n\n<li>Enable HTTP\/2, Brotli\/Gzip, <a href=\"https:\/\/www.youstable.com\/blog\/how-to-add-expires-headers-to-your-wordpress\/\">Expires and Cache-Control headers<\/a>.<\/li>\n\n\n\n<li>Tune MaxRequestWorkers to memory budget; set KeepAliveTimeout 2.<\/li>\n\n\n\n<li>Use a page cache plugin and a CDN for global assets.<\/li>\n\n\n\n<li>Harden TLS and add mod_evasive; logrotate and monitor mod_status.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Quick validation\napachectl -M | egrep 'mpm|http2|deflate|brotli|headers|ssl'\napachectl -V | grep -i mpm\nsystemctl status php8.2-fpm\ncurl -I https:\/\/example.com\/ | egrep 'HTTP\/|content-encoding|cache-control|expires|alt-svc'<\/code><\/pre>\n\n\n\n<p>By following these steps, you can optimize Apache on Linux server environments for lower latency, better throughput, and improved stability, without guesswork. Tweak based on real metrics, protect your resources, and iterate. If you need a hand, YouStable\u2019s managed hosting team can handle the tuning and monitoring end-to-end.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQs<\/strong><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765866423951\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"what-is-the-best-mpm-for-wordpress-on-apache\"><strong>What is the best MPM for WordPress on Apache?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Use event MPM with PHP-FPM. Event handles keep-alives efficiently and <a href=\"https:\/\/www.youstable.com\/blog\/install-and-run-php-8-x-on-ubuntu-20-04\/\">PHP runs<\/a> out-of-process, improving concurrency and stability. Avoid prefork unless you must run non-thread-safe modules.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765866434937\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-calculate-maxrequestworkers-safely\"><strong>How do I calculate MaxRequestWorkers safely?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Measure average memory per request under load, reserve 30\u201340% RAM for the OS\/DB\/cache, then divide your Apache RAM budget by per-request memory. Set ServerLimit \u00d7 ThreadsPerChild accordingly and cap MaxRequestWorkers at or below that number.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765866441669\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"how-do-i-enable-http-2-on-apache\"><strong>How do I enable HTTP\/2 on Apache?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Load mod_http2, ensure SSL\/TLS is enabled, and add \u201cProtocols h2 http\/1.1\u201d to your SSL vhost. Reload Apache. Confirm with curl -I and look for HTTP\/2 or use your browser\u2019s DevTools.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765866449121\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"is-nginx-always-faster-than-apache\"><strong>Is Nginx always faster than Apache?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>No. With event MPM, HTTP\/2, compression, and proper caching, Apache performs competitively. Nginx can be leaner for static files, but for many WordPress\/PHP stacks, tuned Apache is excellent and feature-rich.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765866458719\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"which-modules-should-i-disable-to-improve-performance\"><strong>Which modules should I disable to improve performance?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Disable unused modules like autoindex, status (on public sites), negotiation, cgi, and any legacy modules not required. Run apachectl -M to list modules and comment out LoadModule lines for those you don\u2019t need.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To optimize Apache on a Linux server, use the event MPM with PHP-FPM, enable HTTP\/2 and Brotli\/Gzip, tune KeepAlive and [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":15467,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":1,"footnotes":""},"categories":[350],"tags":[],"class_list":["post-13723","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-to-Optimize-Apache-on-Linux-Server.jpg","author_info":{"display_name":"Prahlad Prajapati","author_link":"https:\/\/www.youstable.com\/blog\/author\/prahladblog"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13723","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=13723"}],"version-history":[{"count":5,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13723\/revisions"}],"predecessor-version":[{"id":13921,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/13723\/revisions\/13921"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/15467"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=13723"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=13723"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=13723"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}