依靠设备浏览器区分:
1、传递请求头
最终目的是要使用UserAgent头
来识别
用户的客户端,然后返回不同的内容给不同的UA用户。而CDN(内容分发网络)缓存并不会区分UA(UserAgent),只会区分URL(访问的地址),所以在访问同样的域名和端口时,缓存的内容是一样的。CDN支持对不同的UA来设置不同的缓存,根据vary头来控制,它的字段一般是头信息的字段。
CDN监测vary头的信息,如果内容不一致就缓存不同的内容,如果头信息一致才会缓存覆盖
vary头需要在源站添加,即在nginx中配置代理时进行添加,配置语句如下:
javascript
add_header Vary "Accept-Encoding, User-Agent";
2、根据头信息区分跳转
已经携带了请求头,对头信息的终端类型进行判断即可,如果符合终端类型则跳转到手机页面,不符合则跳转到PC页面
javascript
if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry|iPhone|Android)) {
root /xxxxxx;
}
要在同一个端口上区分移动端和PC端的请求,并对它们进行不同的配置,你可以在Nginx配置文件中使用ngx_http_mobile_detect_module模块或者通过检查User-Agent头来进行区分。以下是一个基本的配置示例:
javascript
upstream merchantsweb{
server 172.xx.x.xxx:8096 weight=20;
}
upstream merchantswebapp{
server 172.xx.x.xxx:8094 weight=20;
}
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)) {
#移动端对应文件
proxy_pass http://merchantswebapp;
}
#PC端对应文件
proxy_pass http://merchantsweb;
index index.html index.htm;
}
}