在 Debian 上优化 Apache2,通常从性能、安全、模块、系统层面几个方面入手。下面按实用优先级给你一套可落地的优化方案。
apache2 -v
php -v # 如果用 PHP
free -h
nproc
apache2ctl -M | grep mpm
常见三种:
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
编辑:
sudo nano /etc/apache2/mods-available/mpm_event.conf
示例(4 核 8G):
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 10000
</IfModule>
MaxRequestWorkers ≈ 内存 / 每进程内存
sudo a2dismod autoindex status cgi reqtimeout
sudo systemctl restart apache2
常用必须保留:
sudo a2enmod deflate
编辑:
sudo nano /etc/apache2/mods-enabled/deflate.conf
示例:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript
sudo a2enmod expires headers
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
</IfModule>
sudo nano /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
sudo systemctl restart apache2
php-fpm 池配置:
/etc/php/*/fpm/pool.d/www.conf
关键:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
ulimit -n
如太小:
sudo nano /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
sudo nano /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
sudo sysctl -p
sudo a2enmod http2
虚拟主机中:
Protocols h2 http/1.1
CustomLog ${APACHE_LOG_DIR}/access.log combined
apachetop
htop
✅ Debian + Apache2 (event)
✅ PHP-FPM
✅ deflate + expires
✅ HTTP/2
✅ 最少模块
如果你愿意,可以告诉我:
我可以给你精确配置文件。