推荐-Nginx Rewrite的应用-根据访问平台做简单跳转

Nginx Rewrite的应用-根据访问平台做简单跳转



Rewrite模块简介

   Rewrite最主要的作用就是对URL进行重写,即重定向。举个简单的例子,我们用电脑打开淘宝显示出的页面与手机打开显示出的页面,或者是IE与Chrome浏览器打开的页面,有着特别大的差别,这就是使用了Rewrite模块,为用户提供最合适的页面。


Rewrite的配置

一. 在配置之前请先安装好Nginx。不会安装的同学请看我之前写过的Nginx的编译安装
二. 下面我们来编辑Nginx的主配置文件:

[root@code ~]# vim /usr/local/nginx/conf/nginx.conf

在server段加入如下内容:

if ($http_user_agent ~ Mobile){
rewrite ^(.*)$ /Mobile/$1 break;
}
if ($http_user_agent ~ Chrome){
rewrite ^(.*)$ /Chrome/$1 break;
}
if ($http_user_agent ~ like){
rewrite ^(.*)$ /IE/$1 break;
}
if ($http_user_agent ~ Gecko){
rewrite ^(.*)$ /Firefox/$1 break;
}

这段代码是判断用户使用的是什么平台访问的,并根据平台的不同将请求的资源重定向到特定的URL。

三. 下面定义访问页面

1.为Mobile定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/Mobile/
[root@code ~]# echo “This is Mobile Page” > /usr/local/nginx/html/Mobile/test.html

2.为Chrome定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/Chrome/
[root@code ~]# echo “This is Chrome Page” > /usr/local/nginx/html/Chrome/test.html

3.为IE定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/IE/
[root@code ~]# echo “This is IE Page” > /usr/local/nginx/html/IE/test.html

4.为Firefox定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/Firefox/
[root@code ~]# echo “This is Firefox Page” > /usr/local/nginx/html/Firefox/test.html

5.启动服务或重启服务
启动:[root@code ~]# /usr/local/nginx/sbin/nginx
重启:[root@code ~]# /usr/local/nginx/sbin/nginx -s reload


使用不同平台进行测试

  • 1.使用手机进行测试

Alt textMobile.jpg

  • 2.使用Chrome进行测试

Alt textChrome.jpg

  • 3.使用Firefox进行测试

Alt textFirefox.jpg

  • 4.使用IE进行测试

Alt text

IE.jpg

测试都没有问题,我们用不同的平台访问同一个资源的时候,访问到的是经过重定向之后,特定给我们这个平台的页面。


配置参数详解

一. $http_user_agent

$http_user_agent是Nginx自带的内置变量,它能够将用户的请求报文头部的浏览器或平台信息记录到变量中,并输出到访问日志中。

二. Mobile、Chrome、like、Gecko

Nginx通过将用户的请求报文头部的浏览器或平台信息记录到变量中,输出到日志的结果就是它们,即访问者的浏览器或平台信息。

1.Mobile 这个是我通过用手机访问Nginx,查看日志后获得的$http_user_agent对应的信息。
2.Chrome 这个是Chrome浏览器的。
3.like 这个是IE浏览器的。可能是Nginx版本的问题,IE的$http_user_agent信息在以前通常是MSIE,但在nginx-1.9.9版本中却变成了like
4.Gecko这个是Firefox浏览器的,同样在以前通常是Firefox

三. 下面是Nginx的日志信息

[root@code ~]# tail /data/logs/nginx/access.log
192.168.1.243 – – [26/Mar/2016:23:56:01 +0800] “GET / HTTP/1.1” 304 0 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36”
192.168.1.243 – – [26/Mar/2016:23:56:17 +0800] “GET / HTTP/1.1” 200 612 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0”
192.168.1.243 – – [26/Mar/2016:23:57:04 +0800] “GET / HTTP/1.1” 200 612 “-” “Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko”
192.168.1.230 – – [26/Mar/2016:23:58:34 +0800] “GET / HTTP/1.1” 200 612 “-” “Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1”

浏览器或平台信息/后面的是它的版本,同样我们还可以根据版本进行重定向的控制,在这里我就不一一细说了。如果想知道Nginx更多的内置变量,请访问Nginx Embedded Variables

原创文章,作者:张小凡,如若转载,请注明出处:http://www.178linux.com/13505

(0)
张小凡张小凡
上一篇 2016-03-27 21:34
下一篇 2016-03-27 21:49

相关推荐

  • 简单shell脚本编程示例

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。 脚本内容: 执行结果: 2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中 脚本内容: 执行结果: 3、编写脚本/roo…

    Linux干货 2016-08-15
  • 路由器解析路由表

    1.定义——>选择最佳路径;他只完成发送到下一个路径上就结束,任务到达就撤了(就像快递员一样,当他将物件发往到下一个目的地,那他的任务就结束了)2.分类:主机路由、网络路由、默认路由3.每个路由记录由四项主要组成部分目标地址:主机IP、网络ID号、未知地址(0.0.0.0)子网掩码接口interface:从哪个口发往目标地址 网…

    2017-09-05
  • RAID概述

    1、引言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁盘阵列。RAID可以通过相关技术(软件/硬件),将多个较小的磁盘整合成为一个较大的磁盘整体,而且能从某些方面提高数据的读写及数据保护。RAID分为不同…

    Linux干货 2016-12-24
  • Linux用户和组管理

    使用对象:Linux初学者   Linux系统中用户和组管理是很重要的一部分内容。许多初学者在学习或刚接触到用户管理的时候会觉得很难理解,命令多、选项多、配置文件也多,用命令可以修改,用配置文件也可以修改,三两下就被绕进去了。其实完全没必要晕,只要了解了用户管理的方式,就会很容易理解命令选项与配置文件之间的关系。下面我们就来了解下用户管理命令与配置…

    Linux干货 2016-10-23
  • 命令(2017.5.16-2017.519-部分)

    命令(1) bc  计算器 dd if=/dev/zero 查看逻辑设备(非硬件) dd if=/dev/sd 查看硬件设备 dd if=/dev/zeroof=file bs=1M count=24  写入磁盘速度 dd if=/dev/zeroof=/dev/null bs=1M count=24  测试…

    Linux干货 2017-05-22
  • 马哥linux运维网络班第22期-第一周博客作业

    计算机的组成及其功能 计算机由运算器,控制器,存储器,输入装置和输出装置组成 (1)运算器 对数据进行常规运算(+,-,*,/)和逻辑运算(与,或,非等)及比较位移等操作 (2)控制器 分析从存储器中读出的指令并按预先规定的步奏执行操作 (3)存储器 存储程序和数据信息并实现快速存取 (4)输入设备 把各种类型的信息转换为二进制编码输入进计算机存储起来 (5…

    Linux干货 2016-08-14

评论列表(1条)

  • stanley
    stanley 2016-03-27 21:48

    md渲染的格式吧。而且知道写标签和分类,非常厉害,赞 。已置顶且加入免检产品