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) likeGecko”
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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章