Loading... <h1 style="font-size: 2.6em;margin: 21px 0px 10.5px;font-family: inherit;color: inherit">Nginx Rewrite的应用-根据访问平台做简单跳转</h1> <p style="margin-top: 0px;margin-bottom: 1.1em"></p> <hr /> <ul class=" list-paddingleft-2"> <li> <p>Nginx Rewrite的应用-根据访问平台做简单跳转</p> </li> <ul class=" list-paddingleft-2"> <li> <p>Rewrite模块简介</p> </li> <li> <p>Rewrite的配置</p> </li> <li> <p>使用不同平台进行测试</p> </li> <li> <p>配置参数详解</p> </li> </ul> </ul> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">Rewrite模块简介</h2> <p style="margin-top: 0px;margin-bottom: 1.1em"> Rewrite最主要的作用就是对URL进行重写,即重定向。举个简单的例子,我们用电脑打开淘宝显示出的页面与手机打开显示出的页面,或者是IE与Chrome浏览器打开的页面,有着特别大的差别,这就是使用了Rewrite模块,为用户提供最合适的页面。</p> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">Rewrite的配置</h2> <p style="margin-top: 0px;margin-bottom: 1.1em">一. 在配置之前请先安装好Nginx。不会安装的同学请看我之前写过的Nginx的编译安装。<br />二. 下面我们来编辑Nginx的主配置文件:</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@code ~]# vim /usr/local/nginx/conf/nginx.conf</p> </blockquote> <pre>在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。</pre> <p style="margin-top: 0px;margin-bottom: 1.1em">三. 下面定义访问页面</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">1.为Mobile定制的访问页面<br />[root@code ~]# mkdir -p /usr/local/nginx/html/Mobile/<br />[root@code ~]# echo “This is Mobile Page” > /usr/local/nginx/html/Mobile/test.html</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">2.为Chrome定制的访问页面<br />[root@code ~]# mkdir -p /usr/local/nginx/html/Chrome/<br />[root@code ~]# echo “This is Chrome Page” > /usr/local/nginx/html/Chrome/test.html</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">3.为IE定制的访问页面<br />[root@code ~]# mkdir -p /usr/local/nginx/html/IE/<br />[root@code ~]# echo “This is IE Page” > /usr/local/nginx/html/IE/test.html</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">4.为Firefox定制的访问页面<br />[root@code ~]# mkdir -p /usr/local/nginx/html/Firefox/<br />[root@code ~]# echo “This is Firefox Page” > /usr/local/nginx/html/Firefox/test.html</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">5.启动服务或重启服务<br />启动:[root@code ~]# /usr/local/nginx/sbin/nginx<br />重启:[root@code ~]# /usr/local/nginx/sbin/nginx -s reload</p> </blockquote> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">使用不同平台进行测试</h2> <ul style="margin-bottom: 1.1em" class=" list-paddingleft-2"> <li> <p>1.使用手机进行测试</p> </li> </ul> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703170053-44.gif" alt="Alt text" longdesc="./Mobile.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703170053-60.jpg" title="1459045299448317.jpg" alt="Mobile.jpg" /></p> </blockquote> <ul style="margin-bottom: 1.1em" class=" list-paddingleft-2"> <li> <p>2.使用Chrome进行测试</p> </li> </ul> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703170053-44.gif" alt="Alt text" longdesc="./Chrome.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703170053-49.jpg" title="1459045322460320.jpg" alt="Chrome.jpg" /></p> </blockquote> <ul style="margin-bottom: 1.1em" class=" list-paddingleft-2"> <li> <p>3.使用Firefox进行测试</p> </li> </ul> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703170053-44.gif" alt="Alt text" longdesc="./Firefox.jpg" /><img src="//cto.wang/usr/uploads/2016/07/20160703170053-17.jpg" title="1459045326685339.jpg" alt="Firefox.jpg" /></p> </blockquote> <ul style="margin-bottom: 1.1em" class=" list-paddingleft-2"> <li> <p>4.使用IE进行测试</p> </li> </ul> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px"><img src="//cto.wang/usr/uploads/2016/07/20160703170053-44.gif" alt="Alt text" longdesc="./IE.jpg" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703170053-50.jpg" title="1459045332670344.jpg" alt="IE.jpg" /></p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">测试都没有问题,我们用不同的平台访问同一个资源的时候,访问到的是经过重定向之后,特定给我们这个平台的页面。</p> <hr /> <h2 style="font-family: inherit;color: inherit;font-size: 2.15em;margin: 1.2em 0px 0.6em">配置参数详解</h2> <p style="margin-top: 0px;margin-bottom: 1.1em">一. $http_user_agent</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">$http_user_agent是Nginx自带的内置变量,它能够将用户的请求报文头部的浏览器或平台信息记录到变量中,并输出到访问日志中。</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">二. Mobile、Chrome、like、Gecko</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 1.1em">Nginx通过将用户的请求报文头部的浏览器或平台信息记录到变量中,输出到日志的结果就是它们,即访问者的浏览器或平台信息。</p> <p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">1.<code>Mobile</code> 这个是我通过用<code>手机</code>访问Nginx,查看日志后获得的<code>$http_user_agent</code>对应的信息。<br />2.<code>Chrome</code> 这个是<code>Chrome</code>浏览器的。<br />3.<code>like</code> 这个是<code>IE</code>浏览器的。可能是Nginx版本的问题,IE的<code>$http_user_agent</code>信息在以前通常是<code>MSIE</code>,但在<code>nginx-1.9.9</code>版本中却变成了<code>like</code>。<br />4.<code>Gecko</code>这个是<code>Firefox</code>浏览器的,同样在以前通常是<code>Firefox</code>。</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">三. 下面是Nginx的日志信息</p> <blockquote><p style="margin-top: 0px;font-size: 1em;margin-bottom: 0px">[root@code ~]# tail /data/logs/nginx/access.log<br />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) <code>Chrome/49.0.2623.75</code> Safari/537.36”<br />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) <code>Gecko/20100101</code> Firefox/45.0”<br />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) <code>like</code> Gecko”<br />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 <code>Mobile/13D15</code> Safari/601.1”</p> </blockquote> <p style="margin-top: 0px;margin-bottom: 1.1em">浏览器或平台信息/后面的是它的版本,同样我们还可以根据版本进行重定向的控制,在这里我就不一一细说了。如果想知道Nginx更多的内置变量,请访问Nginx Embedded Variables。</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信