Nginx代理:通過同個域名同個端口分別在PC端和手機端訪問不同的適配頁面

一、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端部署路徑。

  

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