nginx 屏蔽指定省份ip访问 允许蜘蛛访问
要在 Nginx 中屏蔽指定省份的 IP 访问并允许蜘蛛访问,可以使用以下配置:
以上配置使用 Nginx 的 GeoIP 模块,可以根据客户端 IP 的地理位置信息来判断其所在的省份。其中,map 模块将客户端 IP 的地理位置中的省份代码映射到 $block\_province 变量,如果客户端 IP 在指定省份,则设置为 1,否则设置为 0。然后在 server 配置块中使用 if 指令判断 $block\_province 的值是否为 1,如果是,则阻止请求,并允许蜘蛛访问。在这里,我们使用 if 指令判断 User-Agent 是否为 Googlebot 或 Bingbot,如果是,则允许访问。
- # 定义一个 $block_province 变量,如果客户端 IP 在指定省份,则设置为 1,否则设置为 0map $geoip_region_code $block_province { default 0; # 在这里添加需要屏蔽的省份,例如:广东省、江苏省、浙江省、北京市 GD 1; JS 1; ZJ 1; BJ 1;}# 阻止来自指定省份的请求,并允许蜘蛛访问server { listen 80; server_name example.com; if ($block_province = 1) { # 允许蜘蛛访问 if ($http_user_agent !~* (Googlebot|Bingbot)) { return 403; } } location / { # 其他配置 }}
以上配置使用 Nginx 的 GeoIP 模块,可以根据客户端 IP 的地理位置信息来判断其所在的省份。其中,map 模块将客户端 IP 的地理位置中的省份代码映射到 $block\_province 变量,如果客户端 IP 在指定省份,则设置为 1,否则设置为 0。然后在 server 配置块中使用 if 指令判断 $block\_province 的值是否为 1,如果是,则阻止请求,并允许蜘蛛访问。在这里,我们使用 if 指令判断 User-Agent 是否为 Googlebot 或 Bingbot,如果是,则允许访问。