1. 程式人生 > >nginx 利用 rewrite 遮蔽IE瀏覽器

nginx 利用 rewrite 遮蔽IE瀏覽器

搞過前端的估計都碰到最頭疼的問題就是瀏覽器相容性問題了,特別是針對IE瀏覽器。往往前端為了省事就搞一個頁面提示使用者升級瀏覽器或者顯示簡單的靜態頁面。那接下來就需要運維來配置nginx rewrite規則了。

在這裡直接貼出配置例項

server {

listen 80;

server_name xxx.xxx.com;

root   /www ;

if ( $http_user_agent ~* “MSIE [6-9].[0-9]”) {

rewrite   /ie.html break;

}

}

解釋一下上面的配置

$http_user_agent  客戶端agent資訊(這個是瀏覽器的標識,如果你開了訪問日誌的話,可以去看一下。每種瀏覽器的標識可能都不一樣。)

~*  使用正則表示式,並且不區分大小寫

MSIE [6,7].[0-9]   MSIE-IE瀏覽器的標識,這裡匹配的是IE瀏覽器在版本在6到9的,例如6.1,7.0,8.2等等···

rewrite   /ie6.html   只要匹配則返回指定的靜態頁面

break 停止執行當前這一輪的ngx_http_rewrite_module指令集

如果需要驗證是否生效的話,這裡提供一個比較方便的工具 IETester,可以模擬IE任意版本的瀏覽器來測試

nginx全域性變數

$args #這個變數等於請求行中的引數。
$content_length #請求頭中的Content-length欄位。
$content_type #請求頭中的Content-Type欄位。
$document_root #當前請求在root指令中指定的值。
$host #請求主機頭欄位,否則為伺服器名稱。
$http_user_agent #客戶端agent資訊
$http_cookie #客戶端cookie資訊
$limit_rate #這個變數可以限制連線速率。
$request_body_file #客戶端請求主體資訊的臨時檔名。
$request_method #客戶端請求的動作,通常為GET或POST。
$remote_addr #客戶端的IP地址。
$remote_port #客戶端的埠。
$remote_user #已經經過Auth Basic Module驗證的使用者名稱。
$request_filename #當前請求的檔案路徑,由root或alias指令與URI請求生成。
$query_string #與$args相同。
$scheme #HTTP方法(如http,https)。
$server_protocol #請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
$server_addr #伺服器地址,在完成一次系統呼叫後可以確定這個值。
$server_name #伺服器名稱。
$server_port #請求到達伺服器的埠號。
$request_uri #包含請求引數的原始URI,不包含主機名,如:”/foo/bar.php?arg=baz”。
$uri #不帶請求引數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
$document_uri #與$uri相同。