【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源

简介: 【Nginx】记录 nginx 配置文件中 location下根据 ua (user-agent) 判断移动端和电脑端不同浏览器来源

一、背景描述

由于已出货的产品上印的有APP软件的下载地址(https://www.****.com/a/fwyzc/mrjxz/) 的二维码,而这个下载地址是无法改变的,使用手机扫描这个二维码出现web端的页面,对手机用户来说很不友好,所以需要解决手机端扫描二维码后自动适配手机端的问题。

二、问题原因

nginx原先配置方式

    location  /a/fwyzc/rjxz {
             # 以下内容表示会跳转到Web端页面,即跳转到 /data/root/****/****/cn/web/software_download.html 这个页面
             alias   /data/root/****/****/cn/web;
             index software_download.html;
    }

对于这个URL来说,nginx配置已强制跳转至 web 页面了,所以手机端无论怎么扫描,都是访问的 web 端页面。

三、解决方案

在这个 location 域中添加对 UA 的判断,注意判断 UA 条件里面,不能使用 root 指向,而使用 alias 后,重定向页面无效果,最后在大佬的建议下,在判断 UA 条件里面使用 rewrite 关键字才可以。

正确的配置如下所示:

  location  /a/fwyzc/rjxz/ {
      alias   /data/root/****/****/cn/web/;
      index  software_download.html;
      # 判断终端
      if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|iPad|BlackBerry)') {
          set $mobile_request '1';
          # 如果访问UA为移动终端类型则判断为 mobile_request=1
      }
      if ($http_cookie ~ 'mobile_request=full') {
          set $mobile_request '';
      }
      if ($mobile_request = '1') {
          rewrite  ^/(.*)$  https://$host/a/fwyzc/mrjxz/ redirect;                                                                                                                                    
      }
  }
  location  /a/fwyzc/mrjxz/ {
      alias   /data/root/****/****/cn/mobile/;
      index software_download.html;
  }

完结!


相关文章
|
数据采集 Web App开发 iOS开发
使用 User-Agent 模拟浏览器行为的技巧
使用 User-Agent 模拟浏览器行为的技巧
|
人工智能 自然语言处理 JavaScript
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
Agent-E 是一个基于 AutoGen 代理框架构建的智能自动化系统,专注于浏览器内的自动化操作。它能够执行多种复杂任务,如填写表单、搜索和排序电商产品、定位网页内容等,从而提高在线效率,减少重复劳动。本文将详细介绍 Agent-E 的功能、技术原理以及如何运行该系统。
1553 5
Agent-E:基于 AutoGen 代理框架构建的 AI 浏览器自动化系统
|
Web App开发 移动开发 前端开发
H5微信外支付(移动端浏览器)
H5微信外支付(移动端浏览器)
919 1
 H5微信外支付(移动端浏览器)
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
Web App开发 编解码
软件开发常见流程之兼容性和手机屏页面设计,PC端和移动端常见浏览器,国内的UC都是根据Webkit修改过来的内核,开发重点关注尺寸,常见移动端尺寸汇总,移动端,理想视口根据你设别的样式进行修改
软件开发常见流程之兼容性和手机屏页面设计,PC端和移动端常见浏览器,国内的UC都是根据Webkit修改过来的内核,开发重点关注尺寸,常见移动端尺寸汇总,移动端,理想视口根据你设别的样式进行修改
|
存储 数据安全/隐私保护 虚拟化
CloudStack Agent 配置文件解析与含义
CloudStack Agent 配置文件解析与含义
337 0
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
949 156
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
486 63
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
388 5
在浏览器执行js脚本的两种方式
|
机器学习/深度学习 人工智能 前端开发
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统
使用TensorFlow.js在浏览器中进行情感分析是一个非常实用的应用场景。TensorFlow.js 是一个用于在JavaScript环境中训练和部署机器学习模型的库,使得开发者能够在客户端直接运行复杂的机器学习任务。对于情感分析,我们可以使用预先训练好的模型来识别文本中的积极、消极或中性情感。
814 4
【人工智能】利用TensorFlow.js在浏览器中实现一个基本的情感分析系统