Nginx代理或重写取决于用户代理,没有if

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

standard answer似乎是,使用if语句.

然而,它显然是众所周知的if statements shouldn’t be used.

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

最佳答案 如果你仔细阅读
if is evil,你会发现它有以下引用:

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. 

所以…

if的邪恶只适用于在一个位置块内使用

在一个位置块内,有两个,只有两个,保证使用if块:

>一个人独自回归……;声明
>一个人持有一个单独的重写…最后;声明
>(注意一个空的if块也会导致问题)

在位置块中if的非保证使用可能有效,但需要进行测试

点赞