web服务器资源分类场景实践

AndroidGA 2020-05-29

web服务器资源分类场景实践

系统版本主机角色外网IP内网IP提供端口
CentOS7.5负载均衡10.0.0.5172.16.1.580
CentOS7.5提供Android页面172.16.1.79090
CentOS7.5提供Iphone页面172.16.1.79091
CentOS7.5提供pc页面172.16.1.79092

1.配置后端WEB节点的Nginx配置

[ conf.d]# vim sj.conf
server {
        listen 9090;
        location / {
                root /code/android;
                index index.html;
        }
}

server {
        listen 9091;
        location / {
                root /code/iphone;
                index index.html;
        }
}

server {
        listen 9092;
        location / {
                root /code/pc;
                index index.html;
        }
}

2.为后端WEB节点配置对应的网站目录及代码

[ conf.d]# mkdir /code/{android,iphone,pc}
[ conf.d]# echo "我是安卓" > /code/android/index.html
[ conf.d]# echo "我是iphone" > /code/iphone/index.html
[ conf.d]# echo "我是computer" > /code/pc/index.html

3.配置负载均衡服务,根据不同的浏览器调度到不同的资源地

[ conf.d]# vim /etc/nginx/conf.d/proxy_sj.conf
upstream android {
        server 172.16.1.7:9090;
}

upstream iphone {
        server 172.16.1.7:9091;
}

upstream pc {
        server 172.16.1.7:9092;
}

server {
        listen 80;
        server_name cs.qy.com;
        charset ‘utf-8‘;

        location / {

                #如果客户端来源是Android则跳转到Android的资源;
                if ($http_user_agent ~* "Android") {
                        proxy_pass http://android;
                }

                #如果客户端来源是Iphone则跳转到Iphone的资源;
                if ($http_user_agent ~* "Iphone") {
                        proxy_pass http://iphone;
                }

                #如果客户端是IE浏览器则返回403错误;
                if ($http_user_agent ~* "MSIE") {
                        return 403;
                }

                #默认跳转pc资源;
                proxy_pass http://pc;
        }
}

4.使用浏览器访问,查看结果

PC端访问

web服务器资源分类场景实践?


浏览器模拟IPhone

web服务器资源分类场景实践?


浏览器模拟Android

web服务器资源分类场景实践?


实际线上的配置

server {
        listen 80;
        server_name   www.drz.com;
        if ($http_user_agent ~* "Android|Iphone") {
                rewrite ^/$ https://sj.drz.com redirect;
        }       
}

相关推荐