温馨提示×

如何优化centos的apache

小樊
44
2026-08-30 00:27:55
栏目: 智能运维

在 CentOS 上优化 Apache(httpd)可以从系统层面、Apache 配置、模块管理、缓存、连接数、安全与监控等多个维度进行。下面按实战可操作的方式给你一份较完整的优化指南(适用于 CentOS 7 / Rocky / Alma / CentOS Stream)。


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

1. 调整系统文件描述符限制

Apache 高并发时容易遇到 Too many open files

ulimit -n

永久修改:

vi /etc/security/limits.conf

追加:

* soft nofile 65535
* hard nofile 65535

2. 调整内核参数

vi /etc/sysctl.conf

建议配置:

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

生效:

sysctl -p

二、Apache 工作模式选择(非常重要)

查看当前 MPM

httpd -V | grep MPM

常见模式:

  • prefork(稳定,但性能一般)
  • worker(线程)
  • event(✅ 推荐,性能最好)

切换为 event MPM(CentOS 7+)

vi /etc/httpd/conf.modules.d/00-mpm.conf

确保只有:

LoadModule mpm_event_module modules/mod_mpm_event.so

注释掉:

# LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

三、Apache 核心配置优化

编辑主配置文件:

vi /etc/httpd/conf/httpd.conf

1. MPM event 推荐配置

<IfModule mpm_event_module>
    ServerLimit            16
    StartServers            4
    MaxRequestWorkers     400
    MinSpareThreads        64
    MaxSpareThreads       128
    ThreadsPerChild        25
    MaxConnectionsPerChild  10000
</IfModule>

✅ 适用于中等并发(200~500)


2. 关闭无用模块(减少内存)

httpd -M

常见可关闭:

# LoadModule autoindex_module
# LoadModule userdir_module
# LoadModule negotiation_module

3. 减少 .htaccess 使用

❌ 不推荐:

AllowOverride All

✅ 推荐:

AllowOverride None

然后直接写规则到 httpd.conf


四、缓存与性能优化

1. 开启 gzip 压缩

vi /etc/httpd/conf.d/deflate.conf
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>

2. 开启缓存(浏览器端)

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

3. 启用 KeepAlive(适度)

KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100

五、PHP 环境优化(如果你用 PHP)

1. 使用 PHP-FPM(强烈推荐)

yum install php-fpm -y
systemctl enable php-fpm

Apache 配置:

<FilesMatch \.php$>
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

2. PHP-FPM 优化

vi /etc/php-fpm.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. 减少日志级别

LogLevel warn

2. 关闭不需要的日志

CustomLog /dev/null common

七、安全与稳定优化

1. 隐藏 Apache 版本

ServerTokens Prod
ServerSignature Off

2. 限制请求大小

LimitRequestBody 10485760

八、监控与压测

1. 查看 Apache 状态

systemctl status httpd
ss -ant | grep :80

2. 压测工具

yum install httpd-tools -y
ab -n 1000 -c 100 http://localhost/

九、推荐典型配置(中小站点)

项目 建议
MPM event
MaxRequestWorkers 300~500
KeepAlive On
PHP PHP-FPM
gzip 开启
.htaccess 尽量不用

十、如果你愿意,我可以进一步帮你

你可以直接告诉我:

  1. CentOS 版本
  2. Apache 版本
  3. 服务器配置(CPU / 内存)
  4. 访问量(PV / 并发)
  5. 是否使用 HTTPS / PHP / 数据库

我可以给你一份完全定制的 Apache 优化方案,甚至可以直接帮你写一份 httpd.conf 示例。

0