要实现这个功能,你可以使用 Nginx 的 ngx_http_user_agent_module 模块来识别蜘蛛和普通用户的用户代理。

下面是一段示例代码,可以屏蔽 PC 端用户的访问,但对蜘蛛开放:

nginx
server {
listen 80;
server_name example.com;
location / {
if ($http_user_agent ~* (PC|Windows|Macintosh)) {
return 403;
}
# 蜘蛛的用户代理字符串,可以根据需要进行修改
set $spider_user_agent "Googlebot";
if ($http_user_agent ~* $spider_user_agent) {
# 对蜘蛛开放的代码
# 可以根据需要添加相应的重定向或代理设置
}
else {
# 普通用户的代码
# 可以根据需要添加相应的重定向或代理设置
}
}
}

在上面的代码中,我们使用 if 指令来检查用户代理是否包含 PC、Windows 或 Macintosh 等关键词,如果是,则返回 403 禁止访问的错误页面。然后,我们使用 set 指令定义了一个名为 $spider_user_agent 的变量,该变量包含一个蜘蛛的用户代理字符串。在 if 指令中,我们使用正则表达式匹配来检查用户代理是否包含该字符串。如果是,则执行相应的代码块,例如添加重定向或代理设置等。
请注意,使用 if 指令进行用户代理匹配可能不是最佳实践。更好的方法是使用 Nginx 的 map 模块或其他更高级的配置选项来实现更精细的用户代理控制。但是,上述代码可以作为一个简单的示例来帮助你开始实现所需的功能。