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。