首页 排行榜文章正文

💥Nginx 通配符配置全解析:一不小心就把服务暴露了!

排行榜 2025年08月05日 02:59 0 aa

在配置 Nginx 时,如果使用通配符(泛域名)(如 *.example.com 或 test.*.example.com),需要特别注意其匹配规则、优先级以及可能带来的安全和运维风险。下面是一些关键点和风险总结:


✅ Nginx 配置时需要注意的点

💥Nginx 通配符配置全解析:一不小心就把服务暴露了!

1.server_name 的匹配优先级

Nginx 会根据以下规则确定哪个 server 匹配:

  • 精确匹配优先(如 server_name www.example.com
  • 通配符前缀匹配(如 *.example.com)优先于后缀匹配
  • 使用正则(~)的 server_name 最后匹配(但优先级可调)

注意:如果同时写了 test-aaa.example.comtest.*.example.com,会出现优先级不明晰的问题,容易导致访问跑到错误的虚拟主机。


2.通配符匹配风险

  • *.example.com 会匹配任意一级子域名,包括攻击者伪造的域名,比如 malicious.example.com
  • 如果使用 server_name _; 作为默认 catch-all,可能会让未授权域名也被处理,暴露服务内容

3.正则匹配配置误用

  • 使用正则的 server_name ~^test\..*\.example\.com$ 容易出现性能问题,除非必要,避免使用正则。
  • 正则配置还容易遗漏边界,比如 .* 会把意想不到的域名也匹配进来。

4.SSL 证书匹配问题

  • 泛域名证书(如 *.example.com不能匹配多级(如 a.b.example.com
  • 多个泛域名匹配可能共用一个证书,不适配时浏览器会报错
💥Nginx 通配符配置全解析:一不小心就把服务暴露了!


5.配置顺序影响行为

  • nginx.conf 中多个 server 的书写顺序可能影响匹配顺序
  • 通配符 server 写在默认 server 前面,避免误匹配

⚠️ 潜在风险汇总

风险类型

描述

域名劫持

如果通配过宽,被绑定的域名可能被恶意使用

证书错误

泛域名证书不覆盖所有子域名,HTTPS 报错

配置冲突

多个 server_name 匹配到同一个请求,排查困难

日志混乱

多个通配 server 共用日志路径时难以溯源

缓存污染

不同站点配置缓存但未隔离,易被污染

默认 server 泄漏

没有配置 default_server 会导致请求走到默认配置,暴露服务


💥Nginx 通配符配置全解析:一不小心就把服务暴露了!

✅ 安全建议

  • 优先使用精确匹配,如 server_name app1.example.com;
  • 控制通配粒度,比如 api-*.example.com*.example.com 更安全
  • 默认配置加 return 444; 拒绝不匹配的请求
  • 给每个 server 设置唯一的访问日志,便于追踪
  • 对 HTTPS 设置 ssl_certificatessl_certificate_key 时注意是否支持通配域名
  • 使用 mapif ($host) 进行进一步控制访问逻辑(慎用)

发表评论

长征号 Copyright © 2013-2024 长征号. All Rights Reserved.  sitemap