Nginx 访问分流规则,依靠 UA 头判断访客类型,仅真人桌面 PC 浏览器触发 302 重定向到 www1 域名;移动端、爬虫脚本、iPad 桌面模式均不参与跳转。
# 1) 提取基础域名:移除 www. / www1. 前缀,得到裸域名
set $base_domain "$host";
# 匹配 www1.开头的域名,捕获后面裸域名部分赋值给base_domain
if ($host ~* "^www1\.(.+)$") {
set $base_domain $1;
}
# 匹配 www.开头的域名,捕获后面裸域名部分赋值给base_domain
if ($host ~* "^www\.(.+)$") {
set $base_domain $1;
}
# 2) UA 判断:识别是否为真实PC桌面浏览器访问
set $is_pc 0;
# 匹配桌面操作系统UA标识,初步标记为PC访问
if ($http_user_agent ~* "(windows\s*nt|macintosh|mac\s*os\s*x|x11|cros|linux\s*(x86|amd64|i686))") {
set $is_pc "Y";
}
# 存在移动端关键字则强制取消PC标记(包含iPad、开启桌面模式手机等移动设备)
if ($http_user_agent ~* "(mobile|iphone|ipad|ipod|android|windows\s*phone|blackberry|opera\s*mini|ucweb|meego|silk|kindle|playbook|nintendo|playstation|wii)") {
set $is_pc 0;
}
# 匹配各类爬虫、机器人、扫描工具、程序请求UA,取消PC标记,不执行跳转
if ($http_user_agent ~* "(bot|spider|crawl|slurp|scan|fetch|semrush|ahrefs|petalbot|bytespider|yandex|baidu|google|bing|sogou|exabot|ia_archiver|360|curl|wget|python|java|libwww|scrapy|go-http|headless|GPTBot|ChatGPT-User|Applebot|DoubaoBot|DeepSeekBot|QwenBot|YuanbaoBot|WenxinBot|KimiBot|ClaudeBot|PerplexityBot|ZhipuBot)") {