• 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,剩下的由网站服务器处理,这样便大大提升了用户访问体验,这是当前企业网站非常常用的解决方案

  • 相关阅读:
    【C++】malloc 和 new 的区别
    10种靠谱又收益不错的在家就可以做的网赚兼职平台介绍
    CSS水平垂直居中方案
    B站7月榜单丨飞瓜数据B站UP主排行榜发布!
    qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串
    react hook: useLayoutEffect
    【QML】使用Qt Design Studio设计UI动态行为
    博客园商业化之路-众包平台:500位驭码好汉,等你来发单挑战
    Python Django相关解答
    ERROR: Failed building wheel for osgeo
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/133604677