nginx 根据用户代理从不同的静态目录提供服务

nginx 根据用户代理从不同的静态目录提供服务

我有这样的目录结构:

HTML
|
|--android/
|--ios/

简而言之,我在 HTML/ 中有 2 个目录(ios 和 android)

两个目录都包含 index.html 。在 android/index.html 中有关联到 ../ios & 在 ios/index.html 中有关联到 ../android 用于将用户从 ios 切换到 android 以及从 android 切换到 ios..

server {
    listen 80 default_server;

    root /home/vishant/HTML;
    index index.html index.htm;

    server_name wishfeed.l;

    location / {
            try_files $uri $uri/ =404;
    }
}

我的 nginx 配置如上所示。

如果用户代理是 ios / 如果用户代理是 android,如何提供目录。

答案1

map指示可以从字符串向下生成适当的文档根user-agent

例如:

map $http_user_agent $root {
    "~*android" /home/vishant/HTML/android;
    "~iPhone" /home/vishant/HTML/ios;
    default /home/vishant/HTML;
}

您必须自己研究正则表达式,因为我不知道它们是否适用于所有情况。

上述代码块位于配置文件上下文中的代码块map上方。在本例中,它创建了一个名为的变量,可在代码块中使用。serverhttp$rootserver


如果您需要从任一子目录提供整个网站的内容,请像这样$root设置全局变量:root

server {
    ...
    root $root;

    location / {
        ...
    }
}

如果只希望 URI/index.html受到影响,请$root在某个位置内使用。例如:

location = /index.html {
    root $root;
}

相关内容