nginx一些常用user_agent的匹配规则详解

 更新时间:2025年07月19日 15:30:22   作者:yuan19997  
Nginx通过map模块可高效匹配user_agent,实现变量设置、访问控制、重定向等操作,如识别移动设备、拦截爬虫、区分浏览器类型,相比if指令,map模块更利于性能优化与规则精准管理

nginx常用user_agent匹配规则

nginx可以使用 map模块来实现user_agent的匹配规则,根据不同的user_agent设置不同的变量或执行不同的操作。

以下是一些常用的user_agent匹配规则示例:

判断是否为移动设备

map $http_user_agent $is_mobile {
    default 0;
    ~*mobile 1;
    ~*Android 1;
    ~*iPhone 1;
    ~*iPad 1;
}

这个规则将会判断用户的user_agent中是否包含"mobile"、"Android"、"iPhone"或"iPad"等关键词,若包含,则将$is_mobile变量设为1,否则设为0。

拒绝某些特定的user_agent

if ($http_user_agent ~* (Baiduspider|Googlebot|bingbot)) {
    return 403;
}

这个规则将会拒绝来自百度、谷歌和必应的爬虫访问,直接返回403禁止访问状态码。

设置变量根据user_agent进行条件判断

map $http_user_agent $browser {
    default "Unknown";
    ~*MSIE "Internet Explorer";
    ~*Firefox "Mozilla Firefox";
    ~*Chrome "Google Chrome";
    ~*Safari "Apple Safari";
}

这个规则将会根据user_agent的不同设置$browser变量,用于后续的操作。

根据user_agent重定向到不同的URL

if ($http_user_agent ~* (Android|iPhone|iPad)) {
    rewrite ^/$ /mobile/ permanent;
}

这个规则将会根据user_agent中是否包含"Android"、"iPhone"或"iPad"等关键词,将根目录的访问重定向到/mobile/目录下。

需要注意的是:

  • 使用if指令可能会导致性能下降,建议尽量使用map模块进行user_agent的匹配。
  • 在编写规则时,应该确保匹配规则的准确性,以免误判或产生意外的结果。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx 基本入门教程

    nginx 基本入门教程

    本篇文章主要介绍了详解nginx 基本入门,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 详解Nginx中的geo模块与利用其配置负载均衡的示例

    详解Nginx中的geo模块与利用其配置负载均衡的示例

    这篇文章主要介绍了详解Nginx中的geo模块与利用其配置负载均衡的示例,文中对模块的geo指令使用有比较详细的介绍,需要的朋友可以参考下
    2016-01-01
  • 修改Nginx源码实现worker进程隔离实现详解

    修改Nginx源码实现worker进程隔离实现详解

    这篇文章主要为大家介绍了修改Nginx源码实现worker进程隔离实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Nginx配置文件详解以及优化建议指南

    Nginx配置文件详解以及优化建议指南

    Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势,下面这篇文章主要给大家介绍了关于Nginx配置文件详解以及优化的相关资料,需要的朋友可以参考下
    2021-09-09
  • Nginx的缓存配置与其他配置方法

    Nginx的缓存配置与其他配置方法

    Nginx的压缩功能配置是通过gzip压缩技术,可以使原来的网页的内容大小压缩成原来的30%,这样,用户在访问网页的时候,由于传输的内容比原内容小很多,故而速度会快很多,本文给大家介绍Nginx的缓存配置与其他配置方法,感兴趣的朋友一起看看吧
    2023-12-12
  • nginx 反向代理之 proxy_pass的实现

    nginx 反向代理之 proxy_pass的实现

    这篇文章主要介绍了nginx 反向代理之 proxy_pass的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • nginx全局块的user指令的实现示例

    nginx全局块的user指令的实现示例

    user用于配置运行Nginx服务器的worker进程的用户和用户组,本文主要介绍了nginx全局块的user指令的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • 利用Nginx代理如何解决前端跨域问题详析

    利用Nginx代理如何解决前端跨域问题详析

    这篇文章主要给大家介绍了关于利用Nginx代理如何解决前端跨域问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • 设置Nginx允许上传文件的大小的代码详解

    设置Nginx允许上传文件的大小的代码详解

    这篇文章主要给大家介绍了关于设置Nginx允许上传文件的大小的方法,文中通过示例代码介绍的非常详细,对大家学习Nginx有一定的参考学习价值,需要的朋友们下面来一起学习吧
    2024-01-01
  • Nginx出现403 Forbidden问题的常见原因与解决

    Nginx出现403 Forbidden问题的常见原因与解决

    Nginx 返回 403 Forbidden 错误通常表示客户端没有权限访问请求的资源,这种错误有许多可能的原因,本文将为大家介绍一下常见的原因和对应的解决方法,希望对大家有所帮助
    2025-03-03

最新评论