如何利用Nginx_geo模块实现CDN调度

发布时间 - 2023-05-30 00:00:00    点击率:

引入nginx的geo模块

geo指令使用ngx_http_geo_module模块提供的。默认情况下,nginx有加载这个模块除非人为的 --without-http_geo_module。

ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端ip地址。使用方法如下:

geo指令
语法: geo [$address] $variable { ... }
默认值: —
配置段: http

定义从指定的变量获取客户端的ip地址。默认情况下,nginx从$remote_addr变量取得客户端ip地址,但也可以从其他变量获得。

在/usr/local/nginx/conf/nginx.conf文件内加入以下配置
geo $geo {
    ranges;          #使用以地址段的形式定义地址,这个参数必须放在首位   
    default dn;
    include ip_geo.conf;
  }

    upstream wuhan.server {
      server   192.168.155.98:8081;
    }

    upstream shanghai.server {
      server   192.168.155.98:8082;
    }

    upstream shenzhen.server {
      server   192.168.155.98:8083;
    }

    upstream dn.server {
      server   192.168.155.98:8084;
    }

 server {
    listen    80;
    server_name 192.168.155.98 jiaoyu.media.cloudp.cc;
      root   html;
      index index.html index.htm;
    location ~* \.xml$ {
      root /data/video;
    }
    location / {
      proxy_redirect off;
      proxy_set_header host $host;
      proxy_set_header x-real-ip $remote_addr;
      proxy_set_header x-forwarded-for 
      $proxy_add_x_forwarded_for;
      proxy_pass http://$geo.server$request_uri;
    }
  }

  server {
    listen 8081;
    server_name 192.168.155.98;
    location / {
      rewrite ^ $scheme://192.168.155.106$request_uri? permanent;
    }
  }

  server {
    listen 8082;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://192.168.155.107$request_uri? permanent;
    }
  }

server {
    listen 8083;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://192.168.155.109$request_uri? permanent;
    }
  }

  server {
    listen 8084;
    server_name 192.168.155.98;
    location / {
        rewrite ^ $scheme://jiaoyu.dn.cloudp.cc$request_uri? permanent;
    }
}

在/usr/local/nginx/conf/文件下增加ip_geo.conf文件,用来对ip区域进行划分,注意划分的时候不能出现ip重叠现象,不然会出现”overlaps”报错

vim /usr/local/nginx/conf/ip_geo.conf

192.168.128.6-192.168.128.10 wuhan;
192.168.128.11-192.168.128.15 shanghai;
192.168.128.16-192.168.128.20 shenzhen;

也可以以10.2.0.0/16 wuhan;这种形式来进行ip分段,这样在nginx.conf中就不不需要使用range指令来进行定义


# nginx  # cdn  # 客户端  # 情况下  # 放在  # 但也  # 报错  # 首位  # 中就  # 可以用来  # 默认值  # 方法如下 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用西部建站助手快速创建专业网站?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何用美橙互联一键搭建多站合一网站?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  奇安信“盘古石”团队突破 iOS 26.1 提权  如何用腾讯建站主机快速创建免费网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何构建满足综合性能需求的优质建站方案?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  黑客如何利用漏洞与弱口令入侵网站服务器?  js实现获取鼠标当前的位置  如何快速上传自定义模板至建站之星?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何在云指建站中生成FTP站点?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  如何在万网开始建站?分步指南解析  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  java获取注册ip实例  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  使用Dockerfile构建java web环境  如何在七牛云存储上搭建网站并设置自定义域名?  如何快速完成中国万网建站详细流程?  晋江文学城电脑版官网 晋江文学城网页版直接进入  新三国志曹操传主线渭水交兵攻略  西安专业网站制作公司有哪些,陕西省建行官方网站?  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel怎么为数据库表字段添加索引以优化查询  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  网站建设保证美观性,需要考虑的几点问题!  网站页面设计需要考虑到这些问题  利用JavaScript实现拖拽改变元素大小  EditPlus 正则表达式 实战(3)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  大型企业网站制作流程,做网站需要注册公司吗?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何在腾讯云服务器上快速搭建个人网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  使用C语言编写圣诞表白程序  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  黑客如何通过漏洞一步步攻陷网站服务器?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  JavaScript如何实现路由_前端路由原理是什么  Laravel Docker环境搭建教程_Laravel Sail使用指南  利用python获取某年中每个月的第一天和最后一天  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何发送系统通知?(Notification渠道示例)