apache进阶配置需围绕实际需求精准调整,重点包括虚拟主机(用sites-available管理、设权限与日志)、访问控制(require指令限制ip、禁目录浏览和危险方法)、url重写(强制https、统一域名、隐藏.php)及性能调优(keepalive、压缩、缓存)。

虚拟主机:一台服务器跑多个网站
关键不在“能配”,而在“配得稳”。Ubuntu 下推荐用 sites-available + sites-enabled 方式管理:
- 为每个站点建独立目录,比如
/var/www/site1.com/html,并设好权限:sudo chown -R $USER:$USER /var/www/site1.com/html - 复制模板创建配置文件:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site1.com.conf - 编辑时至少填三项:
ServerName site1.com、DocumentRoot /var/www/site1.com/html、ErrorLog ${APACHE_LOG_DIR}/site1-error.log - 启用并重载:
sudo a2ensite site1.com.conf && sudo systemctl reload apache2
访问控制:不靠密码,先靠规则
现代 Apache(2.4+)统一用 Require 指令,比老式的 Allow/Deny 更清晰:
- 限制后台只允许公司IP:
<directory> Require ip 203.120.150.0/24 </directory> - 禁止目录浏览(防敏感文件泄露):
Options -Indexes加到对应<directory></directory>块里 - 禁用危险HTTP方法:
LimitExcept GET POST HEAD OPTIONS可放在<location></location>中
URL重写:用对 mod_rewrite,少写一堆跳转
别一上来就写复杂正则,先搞定最常用三件事:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 强制 HTTPS:
RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] - 统一域名(带 www 或不带):
RewriteCond %{HTTP_HOST} ^site1\.com [NC] RewriteRule ^(.*)$ https://www.site1.com/$1 [R=301,L] - 隐藏 .php 后缀:
RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.*)$ $1.php [L]
注意:重写规则要放在 <virtualhost></virtualhost> 内或启用 AllowOverride All 的 .htaccess 中,且确保 mod_rewrite 已启用:sudo a2enmod rewrite。
性能调优:从连接保持开始,别急着改 MaxRequestWorkers
很多卡顿其实源于基础设置没调好:
- 开启 KeepAlive:
KeepAlive On,超时设为KeepAliveTimeout 5(中小流量够用),最大请求数MaxKeepAliveRequests 100 - 压缩文本响应:
sudo a2enmod deflate,再在配置中加AddOutputFilterByType DEFLATE text/html text/css application/javascript - 静态资源缓存:
sudo a2enmod expires,然后加一段:<ifmodule mod_expires.c> ExpiresActive On ExpiresByType image/jpg "access plus 1 year" ExpiresByType text/css "access plus 1 month" </ifmodule>










