搞過前端的估計都碰到最頭疼的問題就是瀏覽器兼容性問題了,特別是針對IE瀏覽器。每每前端爲了省事就搞一個頁面提示用戶升級瀏覽器或者顯示簡單的靜態頁面。那接下來就須要運維來配置nginx rewrite規則了。php
在這裏直接貼出配置實例html
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信息(這個是瀏覽器的標識,若是你開了訪問日誌的話,能夠去看一下。每種瀏覽器的標識可能都不同。)nginx
~* 使用正則表達式,而且不區分大小寫正則表達式
MSIE [6,7].[0-9] MSIE-IE瀏覽器的標識,這裏匹配的是IE瀏覽器在版本在6到9的,例如6.1,7.0,8.2等等···shell
rewrite /ie6.html 只要匹配則返回指定的靜態頁面瀏覽器
break 中止執行當前這一輪的ngx_http_rewrite_module指令集服務器
若是須要驗證是否生效的話,這裏提供一個比較方便的工具 IETester,能夠模擬IE任意版本的瀏覽器來測試cookie
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相同。