nginx服务于基于用户代理的不同静态目录

我有这样的目录结构:

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

总之,我有2个目录(ios&android)在HTML /

这两个目录都包含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; } } 

我的nginxconfiguration就像上面给出的

如果用户代理是ios /如果用户代理是android,如何服务目录。

map指令可以从user-agentstring向下生成适当的文档根。

例如:

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

您将不得不自己处理正则expression式,因为我不知道它们是否适合所有情况。

上述map块位于configuration文件的http上下文内的server块上方。 在这种情况下,它会创build一个名为$root的variables,可以在server块中使用。


如果您需要从任一子目录提供整个网站的内容,请使用$root来设置全局root如下所示:

 server { ... root $root; location / { ... } } 

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

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