温馨提示×

如何优化Ubuntu Apache2

小樊
40
2026-07-06 04:08:21
栏目: 智能运维

下面从性能、安全、模块、配置、日志、缓存、PHP、HTTPS等方面,系统性地介绍如何优化 Ubuntu 上的 Apache2。你可以按需求逐步实施。


一、系统层面优化(基础)

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 调整系统资源限制

编辑:

sudo nano /etc/security/limits.conf

增加:

* soft nofile 65535
* hard nofile 65535

检查:

ulimit -n

二、Apache2 核心性能优化

1. 选择合适的 MPM(关键)

查看当前 MPM:

apache2ctl -M | grep mpm

✅ 推荐方案

场景 MPM
静态内容 / 高并发 event
PHP(非 FPM) prefork
PHP-FPM event(推荐)

切换 MPM(以 event 为例):

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

2. 优化 MPM 配置

编辑:

sudo nano /etc/apache2/mods-available/mpm_event.conf

示例(2~4 核服务器):

<IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadLimit             64
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   1000
</IfModule>

原则:
MaxRequestWorkers = ThreadsPerChild × ServerLimit


三、KeepAlive 优化

编辑:

sudo nano /etc/apache2/apache2.conf

推荐配置:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

四、关闭无用模块(减少内存)

查看已加载模块:

apache2ctl -M

禁用无用模块(示例):

sudo a2dismod autoindex cgi status
sudo systemctl restart apache2

五、启用缓存(非常重要)

1. 启用缓存模块

sudo a2enmod cache cache_disk expires headers
sudo systemctl restart apache2

2. 配置缓存

sudo nano /etc/apache2/sites-available/000-default.conf

示例:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType application/javascript "access plus 7 days"
</IfModule>

六、启用 HTTP/2(提升加载速度)

1. 启用模块

sudo a2enmod http2

2. 在站点配置中启用

Protocols h2 http/1.1

⚠️ HTTP/2 需要 HTTPS


七、启用 HTTPS(安全 + 性能)

1. 安装 Certbot

sudo apt install certbot python3-certbot-apache -y

2. 申请证书

sudo certbot --apache

八、PHP 优化(如果使用 PHP)

✅ 强烈推荐:PHP-FPM

sudo apt install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php8.x-fpm
sudo systemctl restart apache2

PHP 配置优化

sudo nano /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

九、日志优化(减少磁盘 IO)

1. 减少访问日志

CustomLog /var/log/apache2/access.log combined env=!dontlog

2. 关闭不需要的日志

sudo a2dismod status

十、使用 Gzip / Brotli 压缩

Gzip

sudo a2enmod deflate
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

Brotli(可选)

sudo apt install brotli
sudo a2enmod brotli

十一、安全加固(顺带优化)

sudo a2enmod headers
ServerTokens Prod
ServerSignature Off

<IfModule mod_headers.c>
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
</IfModule>

十二、压力测试 & 验证

测试工具

sudo apt install apache2-utils
ab -n 1000 -c 50 http://your-domain.com/

十三、推荐一键检查工具

apache2ctl -S
apache2ctl configtest

总结(优化优先级)

必做

  • 使用 event MPM + PHP-FPM
  • 启用 HTTPS
  • 启用缓存 / 过期头
  • 关闭无用模块

进阶

  • HTTP/2
  • Brotli
  • 日志优化
  • 系统 ulimit

如果你愿意,可以告诉我:

  • 服务器配置(CPU / 内存)
  • 是否使用 PHP / WordPress / Laravel
  • 访问量级别

我可以给你一套完全定制的 Apache2 优化方案

0