Nginx 的 server_name 通过匹配 Host 请求头实现基于域名的虚拟主机分发,支持精确、通配符和正则三种匹配模式,优先级为正则>通配符>精确;泛域名分发依赖正则捕获子域名并用于 proxy_pass 等指令,需配合 DNS 泛解析与 HTTPS 泛域名证书。

Nginx 的 server_name 指令本身不直接“解析”域名(DNS 解析由系统或上游 DNS 服务器完成),但它能匹配客户端请求中的 Host 请求头,从而实现基于域名的虚拟主机分发。所谓“泛域名解析与分发”,实际是通过通配符或正则表达式匹配一类子域名,并将请求路由到对应配置块——这是 Nginx 实现多租户、SaaS 或灰度发布的关键能力。
理解 server_name 的三种匹配模式
server_name 支持精确匹配、通配符匹配和正则匹配,优先级从高到低:正则 > 通配符(开头或结尾带 *)> 精确。Nginx 在收到请求后,提取 Host 头,依次比对所有 server 块中的 server_name,选择第一个匹配项。
-
精确匹配:如
server_name example.com;,仅匹配 Host = "example.com" -
通配符匹配:如
server_name *.example.com;匹配app.example.com、api.example.com,但不匹配www.sub.example.com(只支持单层通配);server_name example.*;匹配example.org、example.net(较少用,需注意 DNS 实际解析) -
正则匹配:以
~开头,如server_name ~^([a-z0-9]+)\.example\.com$;,可捕获子域名用于后续变量(如$1),灵活性最高
实现泛子域名分发(如 user1.example.com → 对应用户站点)
典型场景:为每个用户提供独立子域名(alice.example.com、bob.example.com),静态资源走 CDN,动态请求代理到不同后端服务。关键在于用正则捕获子域名,并在 proxy_pass 或 root 中复用。
示例配置:
server {
listen 80;
server_name ~^([a-z0-9\-]+)\.example\.com$;
<pre class="brush:php;toolbar:false;"># 捕获的子域名存入 $1,可用于日志、代理、路径拼接
set $user_id $1;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 将请求转发到按子域名区分的后端,如 http://backend-alice/
proxy_pass http://backend-$user_id/;
}}
⚠️ 注意:proxy_pass 后带 / 时会剥离匹配的 URI 路径;若后端服务需完整路径,确保写法一致。同时,DNS 层必须已将 *.example.com 泛解析到该 Nginx 服务器 IP。
结合 default_server 处理未匹配请求
当多个 server 块监听同一端口(如 80/443),建议显式定义一个 default_server,防止意外流量落入错误配置。
- 添加
listen 80 default_server;到兜底 server 块 - 该块可返回 444(关闭连接)、404 或重定向到主站,例如:
return 302 https://example.com$request_uri; - 避免仅靠
server_name ""或空值做默认,行为不可靠
HTTPS 泛域名证书与 server_name 协同
要让泛域名 HTTPS 正常工作,SSL 证书必须覆盖对应域名(如 *.example.com)。Nginx 会根据 server_name 选择匹配的 ssl_certificate(需 SNI 支持,现代浏览器均支持)。
推荐写法:
server {
listen 443 ssl http2 default_server;
server_name *.example.com;
<pre class="brush:php;toolbar:false;">ssl_certificate /path/to/wildcard.example.com.crt;
ssl_certificate_key /path/to/wildcard.example.com.key;
# 其他配置...}
若同时存在精确域名(如 example.com)和泛域名配置,且都启用 HTTPS,需确保各自的证书正确加载——Nginx 会按 server_name 匹配结果自动选用对应证书。


















