千家信息网

Nginx中geo模块与利用其配置负载均衡的方法

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇内容主要讲解"Nginx中geo模块与利用其配置负载均衡的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Nginx中geo模块与利用其配置负载均衡
千家信息网最后更新 2024年11月25日Nginx中geo模块与利用其配置负载均衡的方法

本篇内容主要讲解"Nginx中geo模块与利用其配置负载均衡的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"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地址,但也可以从其他变量获得。如

geo $remote_addr $geo {    default 0;    127.0.0.1 1;}geo $arg_ttlsa_com $geo {    default 0;    127.0.0.1 1;}

如果该变量的值不能代表一个合法的ip地址,那么nginx将使用地址"255.255.255.255"。
nginx通过cidr或者地址段来描述地址,支持下面几个参数:

  • delete:删除指定的网络

  • default:如果客户端地址不能匹配任意一个定义的地址,nginx将使用此值。 如果使用cidr,可以用"0.0.0.0/0"代替default。

  • include: 包含一个定义地址和值的文件,可以包含多个。

  • proxy:定义可信地址。 如果请求来自可信地址,nginx将使用其"x-forwarded-for"头来获得地址。 相对于普通地址,可信地址是顺序检测的。

  • proxy_recursive:开启递归查找地址。 如果关闭递归查找,在客户端地址与某个可信地址匹配时,nginx将使用"x-forwarded-for"中的最后一个地址来代替原始客户端地址。如果开启递归查找,在客户端地址与某个可信地址匹配时,nginx将使用"x-forwarded-for"中最后一个与所有可信地址都不匹配的地址来代替原始客户端地址。

  • ranges:使用以地址段的形式定义地址,这个参数必须放在首位。为了加速装载地址库,地址应按升序定义。

geo $country {  default    zz;  include    conf/geo.conf;  delete     127.0.0.0/16;  proxy     192.168.100.0/24;  proxy     2001:0db8::/32;   127.0.0.0/24  us;  127.0.0.1/32  ru;  10.1.0.0/16  ru;  192.168.1.0/24 uk;}
vim conf/geo.conf
10.2.0.0/16  ru;192.168.2.0/24 ru;

地址段例子:

geo $country {  ranges;  default          zz;  127.0.0.0-127.0.0.0    us;  127.0.0.1-127.0.0.1    ru;  127.0.0.1-127.0.0.255   us;  10.1.0.0-10.1.255.255   ru;  192.168.1.0-192.168.1.255 uk;}

geo指令主要是根据ip来对变量进行赋值的。因此geo块下只能定义ip或网络段,否则会报错。

geo模块实现全局负载均衡
server1 : 192.168.6.101
server2 : 192.168.6.102
server3 : 192.168.6.121

测试机1 ip:192.168.6.2
测试机2 ip:192.168.6.8
测试机3 ip:192.168.6.189

1.在每台server上都编译安装 nginx ,我就不多说了!
server1,与server2 的配置我没有改动~只把他的主页改一下,这样有利于测试!
server1 :

shell $> cd /usr/local/nginx/htmlshell $> rm index.htmlshell $> echo "192.168.6.101" > index.html


server2:

shell $> cd /usr/local/nginx/htmlshell $> rm index.htmlshell $> echo "192.168.6.102" > index.html


把他们的服务都起来

shell $> /usr/local/nginx/sbin/nginx

2.修改 server3 的配置`

shell $> cd /usr/local/nginx/conf/shell $> vim nginx.conf
worker_processes 1; events {  worker_connections 1024;}http {  include    mime.types;  default_type application/octet-stream;  geo $geo {    default default;    192.168.6.189/32    uk;    192.168.6.8/32     us;#这里的子网码是 32 是因为,我是单网段测试,如果你有vlan,你可以是24 例如# 192.168.0.0/24   tw  }  upstream  uk.server {    server 192.168.6.101;  }  upstream  us.server {    server 192.168.6.102;  }  upstream  default.server {    server 192.168.6.121:8080;  }  sendfile    on;  keepalive_timeout 65;  server {    listen    80;    server_name 192.168.6.121;    index index.html index.htm;    root html;    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;    }    error_page  500 502 503 504 /50x.html;    location = /50x.html {      root  html;    }   }   server {    listen    8080;    server_name 192.168.6.121;    location / {      root  html;      index index.html index.htm;    }  }}


3.测试,在测试机1 上打开浏览器输入
http://192.168.6.121
显示

因为 测试机1 ip地址为 192.168.6.2 按照 nginx 配置,他访问的很明显是 server3 8080 端口!因为 server1 server2 的 index.html 我修改了

在 测试机2 上打开浏览器~输入
http://192.168.6.121
显示

在 测试机3上打开浏览器~输入
http://192.168.6.121
测试机3 ip为 192.168.6.189
显示:

很明显,负载均衡起到了作用~~~
这样就可以把 三台服务器分别放到不同的idc 机房。然后在数据同步就可以了~这样做的好处就是省去了在dns 上做手脚,因为智能dns 有时候按照来访ip解析的时候会解析对方的dns地址,把他匹配到一台服务器,如果对方是网通用户,他用的电信dns,会直接把他匹配到电信的服务器,nginx,确确实实的根据来访问ip来匹配服务器的,这样只要我们把各地区的ip段收集起来就可以了

到此,相信大家对"Nginx中geo模块与利用其配置负载均衡的方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

地址 测试 客户 测试机 模块 配置 客户端 变量 可信 均衡 服务 方法 服务器 指令 浏览器 递归 浏览 输入 原始 明显 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机软件开发包括服务费吗 山西网络技术咨询常见问题 安徽智能软件开发成本价 动态网页发布到服务器上才能运行 嘉兴常用网络技术创新服务 野蛮打击进不去服务器 手机小软件开发 辽宁省委网络安全中心 电脑发送邮件服务器怎么找 明日之后找不到某些服务器 如何看待服务器被炸事件 服务器mac地址查询 谈谈对网络安全的理解和认识 mysql清空数据库所有表 呼铁局软件开发岗位是做什么的 浦东新区市场网络技术参考价 数据库默认值设置没用 全国银行网点数据库 网络安全宣传视频论文 计算机网络技术及应用课后题 网络安全png 路由器服务器断开连接 avast网络安全许可文件 青龙代理服务器 网络安全征文的评语 数据库系统是用什么软件做的 杭州网络安全学院线上学习 石景山区数据软件开发介绍 数据库中sqr 英雄联盟能跨服务器联机吗
0