确实,有时候就有这个需求,针对特定的路径做匹配,然后跳转/返回对应的404、403...等等。
但是如果不是经常有去接触Nginx的语法的话,说实话要想一下子写出来还是挺浪费时间的,我遇到的Nginx直接用并(&&)是不行的,非常尴尬,因为我想着一般的语言都有这样的关键词,应该是可以的,然而不行就是不行,随即就换了种写法。
还有Nginx的内置变量不太熟悉,然后就是变写变搜索引擎了,哈哈,所以真的有必要记录下,下面是我最近写的一个针对特定路径/设备对相应处理的部分代码如下:
set $flag 0; #判断是否含有特定路径 if ($request_uri ~* "(/特定路径1|/特定路径2)") { set $flag "${flag}1"; } #判断用户代理不是PC端 if ($http_user_agent !~* "(Android|iPhone|Windows Phone|iPad|webOS|BlackBerry|mobile|Baiduspider)") { set $flag "${flag}2"; } #当上面的两个条件都满足的话即返回对应的HTTP状态码403 if ($flag = "012") { return 403; }