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

Nginx正则Map配置问题:按浏览器版本与设备匹配资源包

问题排查与修复方案

你的Nginx配置之所以一直返回legacy-bundle,是因为两个关键错误:

1. 用错了核心变量

你用$http_user_request来匹配浏览器信息,但这个变量存的是用户请求的路径(比如/home),根本不包含Chrome版本、设备类型这些内容。要获取浏览器的标识信息,必须用$http_user_agent变量——这才是浏览器发送的、包含版本和设备细节的字符串。

2. 正则匹配规则过于死板

原正则里的\.:true无法匹配真实的User-Agent格式:比如Chrome的User-Agent是Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36,版本号后面跟着一堆字符,你直接写\.:true会跳过这些内容,导致匹配失败。


修正后的完整配置

map $http_user_agent $is_mobile {
    default         false;
    ~*Mobile        true; # 通过User-Agent里的Mobile关键词判断是否为移动端
}

map "$http_user_agent:$is_mobile" $modern_browser {
    default         "";
    # 匹配移动端Chrome 80及以上版本
    ~*Chrome\/(8[0-9]|[9]\d|\d{3,}).*:true       "modern-bundle";
    # 匹配桌面端Chrome 70及以上版本
    ~*Chrome\/(7[0-9]|[89]\d|\d{3,}).*:false      "modern-bundle";
}

调试小技巧

可以在Nginx里加个临时路由,输出变量值来验证匹配是否生效:

location /test-agent {
    default_type text/plain;
    return 200 "User-Agent: $http_user_agent\nIs Mobile: $is_mobile\nModern Bundle: $modern_browser";
}

访问/test-agent就能看到各个变量的实际值,方便快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:45:42