Apache在云服务器上可用但资源占用高、配置易错,新手应采用最小化安全安装规范:精简系统、裁剪模块、禁用目录遍历与版本暴露、限制HTTP方法、关闭.htaccess、默认拒绝访问,并同步加固云平台安全组、SSH端口及日志管理。
apache 在云服务器上不是不能用,但相比 nginx,它默认占用资源更高、配置更易出错,尤其对新手而言,安全风险更隐蔽。若你明确需要 apache(比如依赖 .htaccess 重写、特定 php 模块兼容性),以下是最小化、可落地的安全安装规范——不堆功能,只留必要项,重点防暴露、防误配、防默认漏洞。
基础系统与环境精简
操作系统选 CentOS Stream 8 或 Ubuntu 22.04 LTS(避免老旧版本如 CentOS 7,已停止维护)。安装时仅勾选“最小安装”,禁用 GUI、邮件服务、蓝牙等无关组件。初始化后立即执行:
- 卸载默认可能冲突的 Web 服务:
yum remove nginx httpd -y(CentOS)或apt purge nginx apache2 -y(Ubuntu) - 关闭非必要端口和服务:
systemctl disable avahi-daemon cups bluetooth - 更新并清理缓存:
yum update -y && yum clean all(或apt update && apt upgrade -y && apt autoremove -y)
Apache 安装与模块裁剪
不使用系统默认全量包,而是手动编译安装或启用最小模块集。推荐方式:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- CentOS:用
yum install httpd httpd-tools -y,然后编辑/etc/httpd/conf/httpd.conf,注释掉所有LoadModule行,仅保留必需的:LoadModule authz_core_module modules/mod_authz_core.soLoadModule dir_module modules/mod_dir.soLoadModule mime_module modules/mod_mime.soLoadModule rewrite_module modules/mod_rewrite.so(仅当需 URL 重写时开启) - Ubuntu:安装
apache2-bin apache2-utils,禁用全部 a2enmod 模块,再按需启用:a2dismod * && a2enmod authz_core dir mime - 删除所有示例文件:
rm -rf /var/www/html/*,确保根目录为空
核心安全配置项
在主配置文件末尾或 /etc/httpd/conf.d/security.conf(CentOS)//etc/apache2/conf-available/security.conf(Ubuntu)中强制添加以下规则:
- 禁止目录遍历:
Options -Indexes -FollowSymLinks - 隐藏版本号:
ServerTokens Prod和ServerSignature Off - 限制 HTTP 方法:
<LimitExcept GET HEAD POST>Require all denied</LimitExcept> - 禁用 .htaccess 覆盖(除非业务强依赖):
AllowOverride None,并移除所有.htaccess文件 - 设置默认拒绝策略:
<Directory "/var/www/html">Require all denied</Directory>,再为具体子目录单独放行
云平台侧必须同步操作
Apache 本身再安全,也挡不住云平台层的疏漏。务必检查并落实:
- 安全组/网络 ACL:仅开放 80(HTTP)、443(HTTPS)端口,绝对禁止开放 22 端口给全网;SSH 改为非标端口(如 2222),且只允许可信 IP 段访问
- 弹性公网 IP 绑定:避免直接用实例公网 IP 提供服务,统一走 EIP + 安全组控制
- 日志落盘:将 Apache 的
access_log和error_log指向独立挂载的数据盘路径(如/data/logs/apache/),防止系统盘写满导致服务中断 - 自动轮转:用
logrotate配置每日压缩、保留 7 天,避免日志无限增长

















