优化 Ubuntu 上的 Apache 配置可以从性能、安全、稳定性三个方向入手。下面按“常见且实用”的方式给你一个系统清单,适合生产环境。
查看当前 MPM:
apache2ctl -V | grep -i mpm
推荐:
eventpreforkevent切换 MPM(以 event 为例):
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
编辑:
sudo nano /etc/apache2/mods-enabled/mpm_event.conf
示例(4 核 8G):
<IfModule mpm_event_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestWorkers 200
MaxConnectionsPerChild 10000
</IfModule>
MaxConnectionsPerChild 防止内存泄漏
sudo nano /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
sudo a2enmod deflate
编辑:
sudo nano /etc/apache2/mods-enabled/deflate.conf
AddOutputFilterByType DEFLATE text/html text/css application/javascript
sudo a2enmod expires
示例:
<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 apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php-fpm
sudo a2dismod phpX.X
sudo systemctl restart apache2
ServerTokens Prod
ServerSignature Off
Options -Indexes
<Directory /var/www/html/admin>
Require ip 192.168.1.0/24
</Directory>
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
LogLevel warn
Ubuntu 默认已配置:
/etc/logrotate.d/apache2
ulimitopcache(PHP)HTTP/2:sudo a2enmod http2
Protocols h2 http/1.1
apache2ctl configtest
sudo systemctl restart apache2
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置文件。