一、nginx配置
1、傳遞請求頭
最終目的是要使用UserAgent頭來識別用戶的客戶端,然後返回不同的內容給不同的UA用戶。而CDN(內容分發網絡)緩存並不會區分UA(UserAgent),只會區分URL(訪問的地址),所以在訪問同樣的域名和端口時,緩存的內容是一樣的。CDN支持對不同的UA來設置不同的緩存,根據vary頭來控制,它的字段一般是頭信息的字段。
CDN監測vary頭的信息,如果內容不一致就緩存不同的內容,如果頭信息一致纔會緩存覆蓋。
vary頭需要在源站添加,即在nginx中配置代理時進行添加,配置語句如下:
add_header Vary "Accept-Encoding, User-Agent";
2、根據頭信息區分跳轉
已經攜帶了請求頭,對頭信息的終端類型進行判斷即可,如果符合終端類型則跳轉到手機頁面,不符合則跳轉到PC頁面:
if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry|iPhone|Android)) { root /xxxxxx;
}
3、整合如下
server { listen 80; server_name www.xxxxxx.com; location / { add_header Vary "Accept-Encoding, User-Agent"; #判斷是否爲手機端 if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry|iPhone|Android)) { root /mobile; } root /pc; index index.html index.htm; }
}
/mobile爲手機端部署路徑,/pc爲pc端部署路徑。