温馨提示×

怎样优化ubuntu apache配置

小樊
33
2026-10-05 03:15:04
栏目: 智能运维

优化 Ubuntu 上的 Apache 配置,通常可以从性能、安全、日志与模块化几个方面入手。下面给你一份比较系统、可操作的优化指南(以 Ubuntu 20.04/22.04 + Apache 2.4 为例)。


一、基础环境与版本检查

apache2 -v
ubuntu-server 22.04

确保使用 Apache 2.4(MPM event 是默认且推荐)


二、选择合适的 MPM(多路处理模块)

查看当前 MPM:

apache2ctl -M | grep mpm

推荐配置(动态站点):

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event

/etc/apache2/mods-available/mpm_event.conf 示例:

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

若是 PHP 老项目(非 PHP-FPM),只能用 mpm_prefork


三、启用并优化 PHP-FPM(强烈推荐)

避免 Apache 直接跑 PHP:

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

mpm_event + php-fpm 是性能最佳组合。


四、开启缓存与压缩

1. 启用常用模块

sudo a2enmod expires headers deflate rewrite

2. 压缩配置(/etc/apache2/conf-available/optimize.conf)

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
</IfModule>

<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 a2enconf optimize

五、关闭不必要模块(减少内存)

查看:

apache2ctl -M

常见可禁用:

sudo a2dismod status autoindex cgi

六、调整 KeepAlive

/etc/apache2/apache2.conf:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

七、安全与资源限制

1. 隐藏版本信息

ServerTokens Prod
ServerSignature Off

2. 限制请求体大小

LimitRequestBody 10485760

八、日志优化

避免磁盘 IO 成为瓶颈:

CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

或轮换:

sudo apt install logrotate

九、使用 HTTP/2(提升并发)

sudo a2enmod http2

虚拟主机中:

Protocols h2 http/1.1

十、系统层面配合

  • 提高文件描述符限制
  • 使用 SSD
  • 启用 opcache(PHP)
  • 使用 Nginx 做前端反代(高并发场景)

十一、重启与测试

sudo apache2ctl configtest
sudo systemctl restart apache2

压力测试:

ab -n 1000 -c 100 http://localhost/

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

  • 是 静态站 / PHP / WordPress / API
  • 服务器 内存 & CPU
  • 是否有 CDN / Nginx 前置

我可以给你一套精准配置模板。

0 踩