nginx - 爬虫程序/机器人无需 SSL

nginx - 爬虫程序/机器人无需 SSL

在 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 语句无论匹配与否都能正常工作的原因。

相关内容