在 nginx 中针对端口 80 的服务器指令中,如果用户代理不是机器人,我想将所有请求重定向到 https。我尝试使用这个:
...
location / {
if ($http_user_agent !~* (bot|spider|crawler|sniffer|facebook) ) {
return 301 https://host.com$request_uri;
}
include other-stuff.inc;
}
我以为 nginx 会在 上停止,return
但事实并非如此。它仍然处理include
(服务于正常站点)并且不会重定向。(如果我注释 ,include
它会重定向)。顺便说一句:Abreak
也不起作用。
答案1
尽管 nginx 配置的某些部分可能类似于程序代码,但实际上并非如此。顺序仅对 if(但并非总是如此)和位置匹配很重要。因此,include 不会被某些假设的指令指针解析,至少在上述情况下不会。这就是您的 include 语句无论匹配与否都能正常工作的原因。