在Nginx中判断用户访问设备是手机还是电脑


nginx 判断访问设备是手机还是电脑。比如我有一个PC端网址 www.xxx.com 和一个手机端的网址 m.xxx.com 现在我需要在nginx获取用户是手机还是电脑,如果是手机访问了 www.xxx.com/news/1 那么我就得自动给它处理到 m.xxx.com/news/1 去。实现方法如正文。

要在Nginx中判断用户是手机访问项目还是电脑访问项目,然后根据不同的访问类型将请求重定向到不同的网址,您可以使用Nginx的$http_user_agent变量来检测用户的User-Agent标头,并根据这个信息来进行相应的重定向。以下是一个示例配置,假设您的PC端网址是www.xxx.com,手机端网址是m.xxx.com:

server {
    listen 80;
    server_name www.xxx.com;


    location / {
        if ($http_user_agent ~* (iPhone|Android)) {
                 return 302 https://m.xxx.com$request_uri;
        }
        # 其他处理逻辑,如果不是手机访问
    }
}

在这个示例中,我们首先定义一个名为www.xxx.com的服务器块,用于处理PC端的请求。在location /块内,我们使用if指令来检查User-Agent标头是否包含"iPhone"或"Android"等关键词。如果包含,就使用rewrite指令将请求重定向到m.xxx.com域名下,保持URL路径不变,并使用permanent标志表示永久重定向。如果不包含这些关键词,您可以在else分支内添加其他处理逻辑,以处理非手机访问。
然后,我们定义了一个名为m.xxx.com的服务器块,用于处理手机端的请求。在该服务器块内,您可以添加手机端网站的处理逻辑。
请注意,这只是一个示例配置,您可以根据您的实际需求进行更复杂的配置和重定向规则。确保在Nginx配置中包含适当的错误处理和安全性设置。

判断PC

server {
    listen 80;
    server_name m.xxx.com;


    location / {
        if ($http_user_agent !~* (iPhone|Android)) {
           return 302 https://www.xxx.com$request_uri;
        }
        # 其他处理逻辑,如果不是手机访问
    }
}

237

声明:Web前端小站 - 前端博客 - 王搏的个人博客|版权所有,违者必究|如未注明,均为原创

转载:转载请注明原文链接 - 在Nginx中判断用户访问设备是手机还是电脑

评论
孙瑞杰生日