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.html2.为Chrome定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/Chrome/
[root@code ~]# echo “This is Chrome Page” > /usr/local/nginx/html/Chrome/test.html3.为IE定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/IE/
[root@code ~]# echo “This is IE Page” > /usr/local/nginx/html/IE/test.html4.为Firefox定制的访问页面
[root@code ~]# mkdir -p /usr/local/nginx/html/Firefox/
[root@code ~]# echo “This is Firefox Page” > /usr/local/nginx/html/Firefox/test.html5.启动服务或重启服务
启动:[root@code ~]# /usr/local/nginx/sbin/nginx
重启:[root@code ~]# /usr/local/nginx/sbin/nginx -s reload
使用不同平台进行测试
-
1.使用手机进行测试
-
2.使用Chrome进行测试
-
3.使用Firefox进行测试
-
4.使用IE进行测试
测试都没有问题,我们用不同的平台访问同一个资源的时候,访问到的是经过重定向之后,特定给我们这个平台的页面。
配置参数详解
一. $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.0Mobile/13D15
Safari/601.1”
浏览器或平台信息/后面的是它的版本,同样我们还可以根据版本进行重定向的控制,在这里我就不一一细说了。如果想知道Nginx更多的内置变量,请访问Nginx Embedded Variables。
原创文章,作者:张小凡,如若转载,请注明出处:http://www.178linux.com/13505
评论列表(1条)
md渲染的格式吧。而且知道写标签和分类,非常厉害,赞 。已置顶且加入免检产品