servername 本身不防盗链也不防劫持,防护依赖配置逻辑:将拒绝型默认虚拟主机置于最前(如配servername default+redirect 403 /),后续站点精确配置servername和serveralias,https端口需单独配置,防盗链须用mod_rewrite校验referer。

ServerName 本身不防盗链,也不直接防止默认站点劫持。它只是 Apache 识别和匹配虚拟主机的依据之一,真正的防护靠的是明确的配置逻辑和响应控制。
明确声明每个虚拟主机的 ServerName 和 ServerAlias
在多虚拟主机环境下,Apache 按照配置文件中 <virtualhost></virtualhost> 块的顺序匹配请求头中的 Host 字段。如果某个请求的 Host 值未被任何 ServerName 或 ServerAlias 覆盖,且没有兜底配置,就会 fallback 到第一个定义的虚拟主机——这就构成“默认站点劫持”风险。
- 为每个正式站点显式配置
ServerName example.com和常用别名ServerAlias www.example.com - 避免留空
ServerName或使用泛域名(如ServerName *) - 把生产站点的
<virtualhost></virtualhost>块按字母或业务顺序排列,但不要依赖顺序做安全假设
设置专用的“拒绝型默认虚拟主机”
这是防范恶意解析和 Host 头滥用的核心手段。它必须放在所有其他 <virtualhost></virtualhost> 块之前,监听相同端口,并主动拒绝未知 Host 的请求。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 在主配置或独立配置文件中添加(以 HTTP 80 端口为例):
ServerName default
Redirect 403 /
- 该配置不提供 DocumentRoot,也不启用日志,纯粹用于拦截
- 返回 403 而非 404,可减少攻击者试探成功率;也可改用
RewriteRule ^ - [F]实现同样效果 - HTTPS 端口(443)需单独配置一个对应版本,否则 TLS 握手后仍可能被利用
防盗链必须靠 Referer 判断 + 响应控制,与 ServerName 无关
盗链行为发生在资源被第三方页面通过 <img src="https://your.com/image.jpg?x-oss-process=image/resize,p_40"> 引用时,浏览器会自动带上 Referer 请求头。ServerName 对此无感知、无影响。
- 启用
mod_rewrite后,在站点配置中加入基于 Referer 的规则:
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https?://(www\.)?yourdomain\.com/ [NC]
RewriteRule \.(jpg|jpeg|png|gif|css|js)$ - [F,NC]
- 第一行允许空 Referer(直接访问或某些隐私模式)
- 第二行白名单你自己的域名,支持 www 和非 www
- 第三行对常见静态资源类型返回 403,避免暴露真实路径
- 注意:Referer 可被客户端伪造,仅作基础防护,高敏感资源建议配合 Token 验证
补充加固:禁用目录浏览 + 隐藏版本信息
这两项虽不直连 ServerName,但在多虚拟主机共存时能降低信息泄露和误访问风险。
- 在每个
<virtualhost></virtualhost>或全局<directory></directory>中添加:Options -Indexes,防止用户列出目录内容 - 关闭服务器标识:
ServerTokens Prod和ServerSignature Off,避免暴露 Apache 版本 - 若使用 HTTPS,确保
Strict-Transport-Security头已启用,防止降级攻击










