Nginx根据User Agent动态配置root目录适配移动端

不同的在终端(移动端和PC端)请求同一个url,需要访问两个不同的目录,这个需求通过Nginx判断User Agent类型来动态配置root目录路径可以方便的实现。

配置代码:

# 根据 User Agent 来判断浏览器类型
map $http_user_agent $is_desktop {
    default 0;
    ~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
    ~*spider|crawl|slurp|bot 1; # bots
    ~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}

# 根据浏览器类型来定义$web_root
map $is_desktop $web_root {
    1 /opt/wwwroot/project/pc/dist;
    0 /opt/wwwroot/project/m/dist;
}

# 配置root为$web_root
server {
    ....
    server_name project.com;
    root $web_root;
    ...
}

注释上写出了配置的三个步骤,动态配置项目root目录路径就实现了,当你在PC端访问域名时,会加载/pc子目录下的项目,移动端则会加载/m目录下的项目,而不需要更换url,很方便。

参考:Nginx dynamic location depending on device used

发表评论

电子邮件地址不会被公开。 必填项已用*标注