温馨提示×

Ubuntu Apache2配置有哪些技巧

小樊
38
2025-12-24 20:53:10
栏目: 智能运维

Ubuntu 上 Apache2 配置实用技巧

一 基础结构与常用模块

  • 熟悉 Ubuntu 的目录约定:/etc/apache2/apache2.conf 为全局配置,核心通过 Include 引入:mods-enabled/sites-enabled/ports.confconf.d/httpd.conf。虚拟主机通常写在 /etc/apache2/sites-available/,启用时用 a2ensite 域名.conf 软链到 sites-enabled/;模块用 a2enmod/ a2dismod 管理。默认文档根目录通常为 /var/www/。修改后执行 sudo systemctl reload apache2 使配置生效。

二 虚拟主机与端口管理

  • 快速新建站点:在 /etc/apache2/sites-available/ 创建如 example.com.conf,设置 ServerNameDocumentRoot、日志与目录权限;使用 a2ensite 启用,必要时 a2dissite 000-default.conf 禁用默认站点。目录权限建议:所有者 www-data:www-data,权限 755
  • 多端口与多站点:在 /etc/apache2/ports.confListen 80Listen 443,如需新增端口(如 8080)一并加入;为每个端口创建对应的 VirtualHost 并启用。
  • 端口变更示例:将默认 80→90443→444,需同步修改 ports.confsites-enabled/000-default 中的 *<VirtualHost :80><VirtualHost *:90>,然后重启服务。
  • 目录访问与安全:在 中使用 AllowOverride All/None(不需要 .htaccess 时设为 None 减少开销),配合 Require all granted 控制访问;静态资源目录可禁用 Indexes 避免目录遍历。

三 性能优化要点

  • 启用长连接:在 apache2.conf 中设置 KeepAlive OnMaxKeepAliveRequests 100KeepAliveTimeout 2(繁忙站点保持低值以减少占用)。
  • 选择并调优 MPM:并发与内存是关键。一般 Prefork 兼容性好(如非线程安全 PHP),Event/Worker 更适合高并发。切换示例:禁用 prefork 并启用 event:sudo a2dismod mpm_prefork && sudo a2enmod mpm_event && sudo systemctl restart apache2。示例参数(Event):StartServers 4MinSpareThreads 25MaxSpareThreads 75ThreadsPerChild 25MaxRequestWorkers 150MaxConnectionsPerChild 1000(需结合实际压测与内存调整)。
  • 压缩与缓存:启用 mod_deflate 压缩文本资源;启用 mod_expires 设置过期头;启用 mod_cache/mod_cache_disk 做磁盘缓存(如:CacheRoot “/var/cache/apache2/mod_cache_disk”CacheEnable disk /)。
  • 连接与超时:适度降低 Timeout(如 5–15 秒)避免长时间挂起;静态资源尽量由 CDN 或反向代理缓存,后端专注动态请求。

四 HTTPS 与反向代理

  • 启用 HTTPS 与 HTTP/2:安装 openssl 并启用模块 a2enmod ssl;在 ports.conf 使用 Listen 443 ssl http2。为站点配置证书路径:SSLCertificateFileSSLCertificateKeyFileSSLCertificateChainFile。使用 Certbot 自动获取并部署证书:sudo apt install certbot python3-certbot-apache && sudo certbot --apache
  • HTTP 自动跳转 HTTPS:在 :80 虚拟主机中加入重写规则,如:RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  • 反向代理与负载均衡:启用 mod_proxymod_proxy_http 等,将请求转发至后端应用,如:ProxyPass “/” “http://127.0.0.1:8088/”ProxyPassReverse / http://127.0.0.1:8088/;也可代理到 AJP 或上游集群实现负载分担。

五 安全加固与运维

  • 隐藏版本信息:设置 ServerTokens ProdServerSignature Off,减少信息泄露面。
  • 访问控制与状态页:仅在必要时启用 mod_status 并限制访问来源;不需要 .htaccess 的目录将 AllowOverride None,降低解析开销与风险。
  • 防火墙与端口:如使用 ufw,放行 Apache 流量:sudo ufw allow ‘Apache’;变更端口后同步放行对应端口。
  • 日志与轮转:使用 logrotate 管理 access.log/error.log,避免日志过大影响性能与磁盘;按需调整 LogFormat 与日志级别。
  • 变更与验证:每次修改后用 apache2ctl configtest 校验语法,再 systemctl reload apache2;生产变更建议灰度与回滚预案。

0