You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在nginx配置中提取URL第一个点之前的动态子域名字符

Nginx 提取首个子域名前缀配置方法

以下两种常用方案都可以实现从域名hello.test.example.com中提取到hello的需求:

方案1:server_name 正则直接捕获

适合域名后缀固定的场景,性能更高,匹配精度好:

server {
    # 正则捕获第一个点之前的字符存入$subdomain变量
    server_name ~^(?<subdomain>[^.]+)\.test\.example\.com$;
    listen 80;

    location / {
        # 此处直接输出$subdomain即可得到hello
        return 200 $subdomain;
    }
}

方案2:map 全局映射提取

适合泛域名场景、需要统一处理不同后缀域名的情况,map 块需配置在http层级:

http {
    # 从$host中提取首个点之前的内容存入$first_subdomain变量
    map $host $first_subdomain {
        ~^(?<tmp>[^.]+)\..*$ $tmp;
        # 兜底规则:域名无点时直接返回原域名
        default $host;
    }

    server {
        server_name *.test.example.com;
        listen 80;

        location / {
            # 此处直接输出$first_subdomain即可得到hello
            return 200 $first_subdomain;
        }
    }
}
  • 两种方案的捕获逻辑都是匹配「从域名开头到第一个点之间的所有非点字符」,完全符合动态子域名的提取需求
  • 捕获得到的变量可以直接在日志、rewrite规则、反向代理参数等任意nginx配置场景中使用

内容的提问来源于stack exchange,提问作者Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:09:03