温馨提示×

apache2 ubuntu配置如何优化

小樊
35
2026-07-06 00:29:18
栏目: 智能运维

下面给你一套Ubuntu 下 Apache2 的常见优化配置方案,从系统、Apache 本身、到 PHP / HTTPS 场景,适合生产环境。可按需裁剪。


一、系统层优化(基础)

1. 调整系统资源限制

ulimit -n

生产环境建议:

ulimit -n 65535

永久生效(Ubuntu):

sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

2. 调整内核参数

sudo vim /etc/sysctl.conf

推荐配置:

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1

生效:

sudo sysctl -p

二、Apache2 核心配置优化

1. 选择合适的 MPM(非常重要)

查看当前 MPM:

apache2ctl -M | grep mpm

✅ 推荐:event(默认,性能最好)

sudo a2enmod mpm_event
sudo a2dismod mpm_prefork
sudo a2dismod mpm_worker

2. MPM event 优化配置

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

推荐配置(4 核 8G 示例):

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

原则:

  • MaxRequestWorkers = 并发上限
  • ThreadsPerChild × ServerLimit ≈ MaxRequestWorkers

三、KeepAlive 优化

sudo vim /etc/apache2/apache2.conf
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3

高并发下 KeepAliveTimeout 不要太大


四、模块精简(非常重要)

1. 禁用无用模块

apache2ctl -M

常见可禁用:

sudo a2dismod autoindex cgi status userdir

五、静态资源 & 缓存优化

1. 启用缓存模块

sudo a2enmod cache cache_disk expires headers

2. 静态资源缓存

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

六、Gzip / Brotli 压缩

1. 启用 Gzip

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

2. 可选:Brotli(性能更好)

sudo apt install brotli
sudo a2enmod brotli

七、SSL / HTTPS 优化(如启用 HTTPS)

1. 启用 HTTP/2

sudo a2enmod http2

虚拟主机中:

Protocols h2 http/1.1

2. SSL 会话复用

SSLSessionCache shmcb:/run/apache2/ssl_scache(512000)
SSLSessionCacheTimeout 300

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

1. 减少访问日志

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

或关闭:

CustomLog /dev/null combined

九、PHP 场景优化(如用 PHP-FPM)

1. 使用 PHP-FPM(不要 mod_php)

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

2. PHP-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

十、压测 & 验证

1. 配置检查

apache2ctl -t

2. 重启

sudo systemctl restart apache2

3. 压测

ab -n 10000 -c 100 http://yourdomain.com/

十一、推荐配置总结(速查)

项目 建议
MPM event
MaxRequestWorkers 300–1000
KeepAliveTimeout 2–5
Gzip 开启
HTTP/2 开启
PHP PHP-FPM
日志 精简
缓存 disk_cache + expires

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

  • 服务器配置(CPU / 内存)
  • 访问量(QPS)
  • 是否 HTTPS / PHP / WordPress / API

我可以给你一套完全针对你环境的 Apache2 配置模板

0