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

时间:2013-02-07 15:45:56

标签: nginx

我需要提供不同的文件,具体取决于用户代理。这是一个非常基本的要求,完全不再提供文件。

standard answer似乎是,使用if声明。

然而,显然众所周知if statements shouldn't be used

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

1 个答案:

答案 0 :(得分:2)

如果您仔细阅读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的邪恶只适用于在地点区块内使用

location - 块中,有两个,只有两个,保证使用if块:

  • 一个持有孤独的return ...;声明
  • 一个持有孤独的rewrite ... last;声明
  • (请注意,空if块也可能导致问题)

位置块中<{1}}的无保证保存使用可能有效,但需要进行测试