首页 > 解决方案 > 配置 Nginx 以根据浏览器类型有条件地提供静态内容

问题描述

我有两个名为“esc6”和“esc5”的静态内容包,用于支持 esc6 和 esc5 的浏览器。我应该如何编写 nginx.conf 文件以根据 $http_user_agent 值有条件地切换位置指令。

前伪代码:

如果 $http_user_agent 包含“chrome || firefox || safari”,则 esc6-bundle 否则 esc5-bundle

标签: nginxnginx-config

解决方案


您应该使用map指令。有关详细信息,请参阅此文档

例如:

map $http_user_agent $bundle {
    default         /js/esc5-bundle.js;
    ~*Chrome        /js/esc6-bundle.js;
    ~*Firefox       /js/esc6-bundle.js;
    ~*Safari        /js/esc6-bundle.js;
}

server {
    ...
    location = /js/bundle.js {
        try_files $bundle =404;
    }
    ...
}

推荐阅读