优化 Ubuntu 上的 Apache(httpd)可以从性能、安全、资源占用、并发能力几个方面入手。下面给你一套从基础到进阶的实用优化方案,适用于大多数生产环境(WordPress、API、静态站等)。
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 -y
查看当前限制:
ulimit -n
修改打开文件数(Apache 高并发很重要):
sudo vim /etc/security/limits.conf
添加:
* soft nofile 65535
* hard nofile 65535
查看当前 MPM:
apache2ctl -M | grep mpm
推荐:
preforkevent(推荐)sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
编辑:
sudo vim /etc/apache2/mods-available/mpm_event.conf
示例(2~4G 内存服务器):
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 150
MaxConnectionsPerChild 1000
</IfModule>
✅ 不要盲目调大
MaxRequestWorkers,否则容易 OOM
apache2ctl -M
禁用无用模块(示例):
sudo a2dismod autoindex cgi status
sudo vim /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
⚠️ 太高会占用连接,太低会增加握手
sudo a2enmod deflate
示例:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
sudo apt install brotli
sudo a2enmod brotli
sudo a2enmod expires
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 30 days"
ExpiresByType text/css "access plus 7 days"
ExpiresByType application/javascript "access plus 7 days"
</IfModule>
sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.x-fpm
sudo vim /etc/php/8.x/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
ServerTokens Prod
ServerSignature Off
LimitRequestBody 1048576
sudo apt install libapache2-mod-evasive
CustomLog /dev/null combined
或按虚拟主机控制日志级别
sudo apache2ctl configtest
sudo systemctl restart apache2
ab -n 1000 -c 100 http://your-domain/
✅ 最优组合
Ubuntu + Apache (mpm_event) + PHP-FPM + Gzip/Brotli + Opcache
你可以告诉我:
我可以直接给你一套定制 Apache 配置。