Nginx代理或重写,取决于用户代理,不带if

Nginx代理或重写,取决于用户代理,不带if,nginx,Nginx,我需要根据用户代理提供不同的文件。这是一个非常基本的要求,比提供文件更进一步 问题似乎是,使用if语句 然而,这显然是众所周知的 所以现在的答案似乎是Apache,但我告诉我的老板nginx是一个可用的产品。有什么建议吗?如果你仔细阅读,你会注意到它有以下引用: The only 100% safe things which may be done inside if in location context are: return ...; rewrite ... last; Anythin

我需要根据用户代理提供不同的文件。这是一个非常基本的要求,比提供文件更进一步

问题似乎是,使用
if
语句

然而,这显然是众所周知的

所以现在的答案似乎是Apache,但我告诉我的老板nginx是一个可用的产品。有什么建议吗?

如果你仔细阅读,你会注意到它有以下引用:

The only 100% safe things which may be done inside if in location context are:
return ...;
rewrite ... last; 

Anything else may possibly cause unpredictable behaviour, including potential
SIGSEGV. 
所以

如果仅适用于在位置块内使用,则
的缺点

位置
-块内,如果
中有两个且只有两个
的保证保存使用:

  • 一个人拿着一个单独的
    return语句
  • 一个人拿着一个单独的
    重写。。。最后语句
  • (请注意,空的
    if
    块也会导致问题)

在位置块中使用
if
的非保证保存可能会起作用,但需要进行测试

这正是我的出发点。我无法让单独的
重写
工作。事实上,我不知道我是否尝试了1 rewrite和
last
关键字的组合。该页面暗示nginx将在下一版本中投入商业使用。似乎表明nginx目前拥有12.64%的web服务器市场份额,而且这一份额已经持续上升了一段时间。换句话说,这取决于你已经在做什么,YMMV是自然的