温馨提示×

CentOS Apache配置怎样提升网站流量

小樊
37
2025-12-21 11:52:58
栏目: 云计算

总体思路CentOS 上,提升网站可承载的并发与有效“流量”(QPS/吞吐)通常从 并发模型、传输效率、缓存策略、连接复用、日志与监控、架构扩展 六个维度入手。下面给出可直接落地的配置与步骤。

一 并发与连接优化

  • 选择并启用 MPM Event(高并发首选),若使用 PHP,需配合 PHP-FPM(Event 与线程安全模块不兼容)。检查与切换示例:
    • 查看 MPM:httpd -V | grep -i mpm
    • 启用 Event(编辑 /etc/httpd/conf.modules.d/00-mpm.conf,确保仅加载 mpm_event,注释 prefork/worker)
    • 安装并启用 PHP-FPM:yum install php-fpm -y && systemctl enable --now php-fpm
  • 调整 Event 参数(示例为中等规模,按内存与压测微调):
    • StartServers 3
    • MinSpareThreads 75
    • MaxSpareThreads 250
    • ThreadsPerChild 25
    • MaxRequestWorkers 400(进程数 × 线程数)
    • MaxConnectionsPerChild 1000
    • ServerLimit 16
  • 开启 KeepAlive 复用连接(高并发建议适度提高,低并发可保守):
    • KeepAlive On
    • KeepAliveTimeout 5–15(秒)
    • MaxKeepAliveRequests 100–300
  • 说明:压缩会提升 CPU 占用,长连接会占用更多内存;以压测结果为准做权衡。

二 传输与缓存优化

  • 启用 Gzip/DEFLATE 压缩,减少传输体积(文本类资源收益最大):
    • 模块:LoadModule deflate_module modules/mod_deflate.so
    • 配置示例:
      • AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json image/svg+xml
      • DeflateCompressionLevel 3–6(1–9,越高压缩率越高、CPU越高)
  • 设置 浏览器缓存(减少重复请求与回源):
    • 模块:LoadModule expires_module modules/mod_expires.so
    • 配置示例:
      • ExpiresActive On
      • ExpiresByType text/css “access plus 1 month”
      • ExpiresByType application/javascript “access plus 1 month”
      • ExpiresByType image/jpeg “access plus 1 year”
      • ExpiresByType image/png “access plus 1 year”
      • ExpiresByType image/gif “access plus 1 year”
      • ExpiresByType image/x-icon “access plus 1 year”
  • 可选:启用 服务器端缓存(动态内容命中率较高时考虑 mod_cache/mod_cache_disk):
    • CacheEnable disk /
    • CacheRoot “/var/cache/apache2/mod_cache_disk”
    • CacheDirLevels 2
    • CacheDirLength 1
    • CacheDefaultExpire 3600
  • 验证:浏览器开发者工具查看响应头 Content-Encoding: gzip;或在线工具检测压缩与缓存命中。

三 日志、监控与基础安全

  • 日志轮转,避免大文件影响 I/O 与性能:
    • 使用 rotatelogs:CustomLog “|/usr/sbin/rotatelogs -l /var/log/httpd/access_%Y%m%d%H%M%S.log 86400” combined
  • 开启 mod_status 做实时监控(仅内网或受限访问):
    • LoadModule status_module modules/mod_status.so
    • 在虚拟主机或全局配置中加:
      • <Location /server-status>
        • SetHandler server-status
        • Require local
        • 如需内网访问:Require ip 192.168.0.0/16

  • 基础安全与信息泄露防护:
    • ServerTokens Prod
    • ServerSignature Off
  • 连接与负载观测:
    • ss -s 查看连接状态
    • ab 压测:ab -n 10000 -c 1000 http://your-domain/
  • 按需启用 mod_rewrite 做防盗链(示例禁止外站盗用图片):
    • RewriteEngine On
    • RewriteCond %{HTTP_REFERER} !^http://your-domain/ [NC]
    • RewriteRule .(gif|jpg|png|swf)$ /error.html [R,NC]

四 架构扩展与流量承载

  • 静态资源卸载:将 图片、CSS、JS、视频 交由 NginxCDN,Apache 专注动态请求,显著降低后端负载与时延。
  • 反向代理与负载均衡(多台后端时):
    • 启用模块:mod_proxy、mod_proxy_balancer
    • 示例:
      • <Proxy balancer://mycluster>
        • BalancerMember http://10.0.0.11:8080
        • BalancerMember http://10.0.0.12:8080
      • ProxyPass / balancer://mycluster/
      • ProxyPassReverse / balancer://mycluster/

五 快速检查清单与建议值

  • 确认 MPM 为 event,PHP 走 PHP-FPM
  • KeepAlive:On;KeepAliveTimeout:5–15s;MaxKeepAliveRequests:100–300
  • 压缩:启用 mod_deflate;压缩级别 3–6;覆盖 text/html、text/css、application/javascript、application/json、image/svg+xml
  • 缓存:启用 mod_expires;长期缓存 图片/字体/图标(1年)CSS/JS(1个月)
  • 日志:启用 rotatelogs 按天/小时切割
  • 监控:开启 mod_status;用 ab/ss 做压测与连接观测
  • 扩展:静态资源上 CDN/Nginx;多机用 mod_proxy_balancer 做负载均衡
  • 每次变更先备份配置,执行 configtest 再重启:httpd -t && systemctl restart httpd

以上配置与步骤在 CentOS 7/8/StreamApache 2.4 上通用;参数需结合实例规格与业务特征压测微调,优先从“并发模型 + 压缩 + 缓存”三板斧入手,再考虑架构扩展。

0