mod_pagespeed is a Google-developed Apache module that automatically optimizes web pages and assets to improve site speed. It rewrites HTML, CSS, JavaScript, and images on-the-fly without requiring changes to your application code. This guide covers installing and configuring mod_pagespeed for production use.
Install mod_pagespeed
# Debian/Ubuntu
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
sudo dpkg -i mod-pagespeed-stable_current_amd64.deb
sudo apt -f install # Fix dependencies
# RHEL/Rocky
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_x86_64.rpm
sudo rpm -U mod-pagespeed-stable_current_x86_64.rpm
# Restart Apache
sudo systemctl restart apache2
# Verify
curl -sI http://localhost | grep X-Mod-Pagespeed
Configure Optimization Filters
# /etc/apache2/mods-available/pagespeed.conf
ModPagespeed on
ModPagespeedFileFetchPath /var/mod_pagespeed/
# Core filters (enabled by default)
ModPagespeedRewriteLevel CoreFilters
# Enable additional useful filters
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters combine_css
ModPagespeedEnableFilters combine_javascript
ModPagespeedEnableFilters convert_jpeg_to_progressive
ModPagespeedEnableFilters convert_jpeg_to_webp
ModPagespeedEnableFilters convert_png_to_jpeg
ModPagespeedEnableFilters defer_javascript
ModPagespeedEnableFilters inline_css
ModPagespeedEnableFilters inline_javascript
ModPagespeedEnableFilters lazyload_images
ModPagespeedEnableFilters move_css_to_head
ModPagespeedEnableFilters optimize_images
ModPagespeedEnableFilters prioritize_critical_css
ModPagespeedEnableFilters responsive_images
ModPagespeedEnableFilters rewrite_css
ModPagespeedEnableFilters rewrite_images
ModPagespeedEnableFilters rewrite_javascript
# Image optimization settings
ModPagespeedJpegRecompressionQuality 75
ModPagespeedImageMaxRewritesAtOnce 8
ModPagespeedImageResolutionLimitBytes 32000000
# CSS/JS optimization
ModPagespeedCssInlineMaxBytes 4096
ModPagespeedJsInlineMaxBytes 2048
ModPagespeedMaxCombinedJsBytes 200000
# Cache settings
ModPagespeedFileCachePath /var/cache/mod_pagespeed
ModPagespeedFileCacheSizeKb 102400
ModPagespeedFileCacheCleanIntervalMs 3600000
ModPagespeedLRUCacheKbPerProcess 1024
ModPagespeedLRUCacheByteLimit 16384
# Admin and statistics
Order deny,allow
Deny from all
Allow from 127.0.0.1
ModPagespeedStatistics on
ModPagespeedStatisticsLogging on
Per-VirtualHost Configuration
ServerName example.com
# Override global settings per site
ModPagespeed on
# Disable for specific paths
ModPagespeed off
# Disable for specific user agents (crawlers)
ModPagespeedDisallow "*/api/*"
# Whitelist domains for resource rewriting
ModPagespeedDomain https://example.com
ModPagespeedDomain https://cdn.example.com
ModPagespeedMapRewriteDomain https://cdn.example.com https://example.com
Verify Optimizations
# Check pagespeed headers
curl -sI https://example.com | grep -i pagespeed
# View statistics
curl http://localhost/pagespeed_admin/statistics
# View active filters
curl http://localhost/pagespeed_admin/config
# Test with Google PageSpeed Insights
# Before and after enabling mod_pagespeed
Best Practices
- Start with CoreFilters and add filters incrementally
- Test thoroughly: Some filters can break JavaScript-heavy applications
- Disable for admin areas and API endpoints to avoid interference
- Monitor cache size: mod_pagespeed's cache can grow large
- Use with a CDN: mod_pagespeed + CDN = maximum performance
- Check image quality: Adjust JpegRecompressionQuality for your quality/speed balance