2019独角兽企业重金招聘Python工程师标准>>>

上一次上线只是简单的把手机端的流量切换手机端的首页,有点粗糙,现在需要把电脑端相应的页面切换到电脑端的页面,直接用nginx自带的rewrite不太好做,所以用lua做

下面开始代码

nginx 配置

location / {rewrite_by_lua_file lua/mobile.lua;... # 反向代理
}

mobile.lua代码

-- 手机访问重定向到移动版local agent = ngx.var.http_user_agentif agent ~= nil thenlocal m, ret = ngx.re.match(agent, "Android|webOS|iPhone|iPod|BlackBerry")if m ~= nil thenlocal queryString = ngx.var.argsif queryString == nil then queryString = "" endlocal rewrite_urls = {}rewrite_urls["/"] = "/app/index.html"rewrite_urls["/coin/index.html"] = "/app/coin.html"rewrite_urls["/equity/index.html"] = "/app/coin.html"rewrite_urls["/guide/index.html"] = "/app/guide.html?" .. queryStringrewrite_urls["/market/trade.html"] = "/app/trade.html?" .. queryStringrewrite_urls["/account/fund.html"] = "/app/account.html?" .. queryStringrewrite_urls["/guide/article.html"] = "/app/guide-details.html?" .. queryStringlocal redirect_uri = rewrite_urls[ngx.var.uri]if redirect_uri thenngx.redirect(redirect_uri, ngx.HTTP_MOVED_TEMPORARILY)endend
end

其实逻辑也很简单,主要在nginx rewrite 阶段完成页面跳转,判断是否手机端,然后通过一个table把对应的url映射好,直接以当前uri作为key取table的值,如果取到说明有映射关系,直接把值当成新的url重定向过去

queryString是get参数,有的需要有的不需要,不带参数的话,有点页面会有问题,比如文章详情,是需要文章ID的

通过lua可以写很复杂的服务端处理逻辑,应用程序只需要做好自己的事情就好了

转载于:https://my.oschina.net/362228416/blog/802681

使用lua实现nginx rewrite相关推荐

  1. nginxlua文件服务器权限,通过lua进行nginx的权限控制

    nginx_lua的安装 nginx使用luajit进行编译安装 使用openresty进行yum安装 openresty中将lua和nginx进行封装,详情可查看openresty官网 openre ...

  2. nginx rewrite重写与防盗链配置

    nginx rewrite重写规则与防盗链配置方法 时间:2016-02-04 15:16:58来源:网络 导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标 ...

  3. nginx rewrite 参数和例子

    nginx rewrite 参数和例子 推荐参考地址: Mailing list ARChives 官方讨论区 http://marc.info/?l=nginx Nginx 常见应用技术指南[Ngi ...

  4. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  5. Nginx Rewrite规则初探

    Nginx  rewrite(nginx url地址重写) Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要N ...

  6. Nginx系列二:(Nginx Rewrite 规则、Nginx 防盗链、Nginx 动静分离、Nginx+keepalived 实现高可用)...

    一.Nginx Rewrite 规则 1. Nginx rewrite规则 Rewrite规则含义就是某个URL重写成特定的URL(类似于Redirect),从某种意义上说为了美观或者对搜索引擎友好, ...

  7. php 伪静态规则,在线将Apache Rewrite Rules伪静态规则转换为Nginx Rewrite伪静态规则...

    一般php的开发者本地使用的都是使用apache服务器,使用伪静态的时候每次都需要转换成nginx rewrite规则,于是做了个在线将Apache htaccess Rewrite伪静态规则自动转换 ...

  8. nginx rewrite php参数,Nginx rewrite伪静态配置参数详解

    nginx rewrite 伪静态配置参数和使用例子(附正则使用说明) 正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大 ...

  9. nginx rewrite php参数,Nginx泛域名解析及Rewrite重定向普通页面及带参数的页面

    静态地址重定向到带参数的动态地址 rewrite "^(.*)/service/(.*)\.html$" $1/service.php?sid=$2 permanent; 带参数的 ...

最新文章

  1. 温网停赛,AI不停赛:斯坦福新研究模拟网球名将打比赛
  2. 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)
  3. 关于jQuery在Asp.Net Mvc 框架下Ajax文件上传的实现
  4. VS与SVN的交互VisualSVN
  5. 语音识别中强制对齐_语音识别中的标注问题和嵌入式训练
  6. Cisco路由器安全配置命令
  7. 记一次MyBatis的错误
  8. linux 下的csp 模块,linux kernel 中MIGRATE_TYPES的理解
  9. Windows8 游戏开发教程-二、关于资源和工具
  10. C 语言 边读 边写入文件
  11. hdu -1251 统计难题(字典树水题)
  12. JS操作Cookie写入和读取实例代码
  13. 3种常用的Redis缓存读写策略
  14. mtk系统如何制作差分包且正确签名?
  15. 新一代天气雷达文件三维可视化
  16. CentOS挂载光盘镜像安装rpm包
  17. 【沐风老师】教你在3dMax中使用Greeble插件结合变形修改器建模
  18. 基于 Amazon 和西门子工业边缘的云边协同方案
  19. 立体匹配---立体匹配过程
  20. 威廉•欧奈尔选股七法

热门文章

  1. 关于select的描述计算机,计算机二级考试MySQL数据库每日一练 12月21日
  2. 西门子uss通讯实例_西门子plc1200系列的功能特点有哪些?
  3. 计算机基础函数运用,计算机应用基础第十二讲:EXCEL中函数的实际运用.doc
  4. 计算机应用基础-0025,【技工学校《计算机应用基础》课程教学特点及讲授策略】 计算机应用基础...
  5. 利用计算机诊断ct故障,计算机在CT室工作中的应用及管理
  6. elementui组件_elementui 中 loading 组件源码解析(续)
  7. vue 指令 v-on 函数传参
  8. mybatis SqlMapConfig.xml environments
  9. docker run
  10. Ubuntu 安装R/Rstudio