• nginx根据不同的客户端设备进行转发请求——筑梦之路


    这里主要介绍七层负载方式实现。

    环境说明:

    pc端    web-1   

    苹果ios端  web-2

    安卓Android端  web-3

    负载均衡   web-lb

    配置示例:

    pc端:

    1. server {
    2. listen 9000; #监听9000
    3. server_name pc.xxx.com;
    4. charset utf-8;
    5. location / {
    6. root /code/pc;
    7. index index.html;
    8. }
    9. }
    10. # 创建站点目录
    11. mkdir /code/pc
    12. echo '这里是pc端页面' > /code/pc/index.html
    13. # 检查语法,重启nginx
    14. nginx -t
    15. systemctl restart nginx

    苹果ios端:

    1. server {
    2. listen 9001;
    3. server_name ios.xxx.com;
    4. charset utf-8;
    5. location / {
    6. root /code/ios;
    7. index index.html;
    8. }
    9. }
    10. # 站点目录
    11. mkdir /code/ios
    12. echo '这里是ios端页面' > /code/ios/index.html
    13. # 检查语法,重启nginx
    14. nginx -t
    15. systemctl restart nginx

    Android端:

    1. vim andorid.conf
    2. server {
    3. listen 9002;
    4. server_name andorid.xxx.com;
    5. charset utf-8;
    6. location / {
    7. root /code/andorid;
    8. index index.html;
    9. }
    10. }
    11. # 站点目录
    12. mkdir /code/andorid
    13. echo '这里是andorid端页面' > /code/andorid/index.html
    14. # 检查语法,重启nginx
    15. nginx -t
    16. systemctl restart nginx

    负载均衡web-lb:

    1. # 资源分离配置
    2. cd /etc/nginx/conf.d
    3. vim proxy_1.conf
    4. upstream pc {
    5. server 172.16.1.7:9000;
    6. }
    7. upstream android {
    8. server 172.16.1.8:9001;
    9. }
    10. upstream ios {
    11. server 172.16.1.9:9002;
    12. }
    13. server {
    14. listen 80;
    15. server_name bl.xxx.com;
    16. charset 'utf-8';
    17. location / {
    18. #如果客户端来源是Android则跳转到Android的资源;
    19. if ($http_user_agent ~* "android") {
    20. proxy_pass http://android;
    21. }
    22. #如果客户端来源是ios则跳转到ios的资源;
    23. if ($http_user_agent ~* "iphone") {
    24. proxy_pass http://ios;
    25. }
    26. #如果客户端是IE浏览器则返回403错误;
    27. if ($http_user_agent ~* "MSIE") {
    28. return 403;
    29. }
    30. #默认跳转pc资源;
    31. proxy_pass http://pc;
    32. }
    33. }
    34. # 检查语法重载nginx
    35. nginx -t
    36. nginx -s reload

    四层方案和七层方案对比说明:

    四层方案需要记忆不同域名,通过不同域名引导用户到指定的后端服务器

    七层则不用。七层对外只需要用一个域名,如www.test.com,然后通过获取用户请求中的设备信息(利用日志中的 $http_user_agent 获取),根据这些信息转给后端合适的服务器处理即可。这个方案最大好处就是不需要让用户记忆多个域名,用户只需要记住主网站地址 www.test.com,剩下的由网站服务器处理,这样便大大提升了用户访问体验,这是当前企业网站非常常用的解决方案

  • 相关阅读:
    dnslog注入_dnslog盲注
    java计算机毕业设计在线招生系统源代码+系统+数据库+lw文档
    常见面试题-Redis专栏(一)
    Mygin中间件优化及logger日志中间件
    SpringCloud的新闻资讯项目07 --- app端文章搜索
    货架穿梭车控制方案
    【VIO】练习1 IMU标定
    C++重载运算符
    MySQL之创建高性能的索引(十二)
    【数据结构】LeetCode栈和队列经典题型
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/133604677