nginx配置,同一个端口对应移动端与pc端

依靠设备浏览器区分:

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;  
      }   
}
相关推荐
业余幻想家14 分钟前
Windows10/Windows11家庭版系统关闭自动更新
运维·windows
努力进修27 分钟前
跨地域传文件太麻烦?Nginx+cpolar 让本地服务直接公网访问
运维·nginx·cpolar
Qayrup37 分钟前
docker 搭建私有仓库,推送并拉取
运维·docker·容器
闪耀星星42 分钟前
debian elctron-builder
运维·debian
会飞的土拨鼠呀42 分钟前
Debian 12 笔记本合盖不休眠设置指南
运维·debian
梁正雄3 小时前
6、prometheus资源规划
运维·服务器·服务发现·prometheus·监控
晨曦之旅3 小时前
零成本体验云计算!阿贝云免费服务器深度测评
运维·服务器·云计算
工具人55553 小时前
Linux 抓取 RAM Dump 完整指南
linux·运维·安全
会飞的小蛮猪4 小时前
SkyWalking运维之路(Java探针接入)
java·运维·经验分享·容器·skywalking
天一生水water4 小时前
docker-compose安装
运维·docker·容器