通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构。本文将分享一个如何根据来路IP来进行分流的方法。

根据特定IP来实现分流

  • 将IP地址的最后一段最后一位为0或2或6的转发至hi-linux-01.com来执行,否则转发至hi-linux-02.com来执行。

upstream nginx-01.com {
  server 192.168.1.100:8080;
} upstream nginx-02.com {
  server 192.168.1.200:8080;
} server {   listen 80;
  server_name www.osriy.org;   location / {
    if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[026]$){
         proxy_pass http://nginx-01.com;
         break;
        }
        proxy_pass http://nginx-02.com;
    }
}
  • 将IP地址前3段为112.18.96.*转发至nginx-01.com来执行,否则转发至nginx-02.com来执行。

upstream nginx-01.com {
  server 192.168.1.100:8080;
} upstream nginx-02.com {
  server 192.168.1.200:8080;
} server {   listen 80;
  server_name www.zhsir.org;   location / {
    if ( $remote_addr ~* ^(112)\.(18)\.(96)\.(.*)$){
         proxy_pass http://nginx-01.com;
         break;
        }
        proxy_pass http://nginx-02.com;
    }
}

根据指定范围IP来实现分流

将IP地址的最后一段为1-100的转发至nginx-01.com来执行,否则转发至nginx-02.com执行。

upstream nginx-01.com {
  server 192.168.1.100:8080;
} upstream nginx-02.com {
  server 192.168.1.200:8080;
}
server {   listen 80;
  server_name www.zhsir.org;   location /
  {
   if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.[1,100]$){
        proxy_pass http://nginx-01.com;
        break;
    }
    proxy_pass http://nginx-02.com;
  } }

根据forwarded地址分流

将IP地址的第1段为212开头的访问转发至nginx-01.com来执行,否则转发至nginx-02.com执行。

upstream nginx-01.com {
  server 192.168.1.100:8080;
} upstream nginx-02.com {
  server 192.168.1.200:8080;
} server {   listen 80;
  server_name www.zhsir.org;   location /
  {
   if ( $http_x_forwarded_for ~* ^(212)\.(.*)\.(.*)\.(.*)$){
        proxy_pass http://nginx-01.com;
        break;
    }
    proxy_pass http://nginx-02.com;
  } }

if指令的作用

if指令会就检查后面表达式的值是否为真(true)。如果为真则执行后面大括号中的内容。

以下是一些条件表达式的常用比较方法:

1.变量的完整比较可以使用=或!=操作符
2.部分匹配可以使用~或~*的正则表达式来表示
3.~表示区分大小写
4.~*表示不区分大小写(nginx与Nginx是一样的)
4.!~与!~*是取反操作,也就是不匹配的意思
6.检查文件是否存在使用-f或!-f操作符
7.检查目录是否存在使用-d或!-d操作符
8.检查文件、目录或符号连接是否存在使用-e或!-e操作符
9.检查文件是否可执行使用-x或!-x操作符
10.正则表达式的部分匹配可以使用括号,匹配的部分在后面可以用$1~$9变量代替

通过Nginx反向代理实现IP分流的更多相关文章

  1. Nginx反向代理实现IP访问分流

    通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或 ...

  2. nginx反向代理取得IP地址

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  3. Nginx 反向代理,IP、端口,项目路径变化的问题

    这两天在云上部署公司项目,涉及到nginx反向代理,在部署完成测试,发现在下载文件的时候,无法下载,提示链接被拒绝. 假设nginx代理地址: http://121.53.21.188:9012/we ...

  4. Nginx 反向代理 一个IP代理多个域名,不区分端口,类似windows虚拟机。

    简介: IP有限,所以我们以前使用端口来区分不同的虚拟主机,提供不同的WEB服务. 小范围还凑活,一旦规模扩大,地址记不住了吧?端口记不住了吧? 这个时候我们可以使用DNS,域名解析,毕竟记名字比记I ...

  5. nginx反向代理同一主机多个网站域名

    nginx反向代理同一ip多个域名,给header加上host就可以了 proxy_set_header   Host             $host; nginx.conf例子 upstream ...

  6. nginx 反向代理实现负载均衡*配置实战

    重要点: 1配置反向代理多虚拟主机节点服务器 2经过反向代理后的节点服务器记录用户IP 3与反向代理配置相关的更多参数说明 4根据URL目录地址转发 (1)根据URL中的目录地址实现代理转发(动静分离 ...

  7. 关于nginx反向代理后获取不到客户端的真实ip地址问题

    前段时间在我的网站上用nginx做了一下反向代理,最近发现不能获取客户端ip了,都是拿到的127.0.0.1的本地ip... 通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx ...

  8. nginx 反向代理 取得真实IP和域名

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  9. Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例

    原文地址:http://www.jb51.net/article/31844.htm Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...

随机推荐

  1. bazel-编译多目标

    demo2 使用bazel编译多目标示例,一个bianry,一个library. demo2目录树 ── demo2 ​ ├── app ​ │ ├── BUILD ​ │ ├── func.cpp ...

  2. Nginx 使用中文URL,中文目录路径

    Nginx 使用中文URL,中文目录路径 分类: linux2012-05-03 11:04 2672人阅读 评论(0) 收藏 举报 nginxurl服务器translationcentosserve ...

  3. windows phone 切换多语言时,商店标题显示错误的问题

    前段时间,用业余时间写了一款 wp8 app(“超级滤镜”商店,中文地址:英文地址),在多语言的时候,给 app title 和 app tile title 进行多语言时(参考 MSDN),中文商店 ...

  4. python爬虫解析库之Beautifulsoup模块

      一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会 ...

  5. httpclient 4种关闭连接

    因此这样的配置就会导致每个链接至少要过180S才会被释放,这样在大量请求访问时就必然会造成链接被占满,请求等待的情况. 在通过DEBUH后发现HttpClient在method.releaseConn ...

  6. background-origin:规定 background-position 属性相对于什么位置来定位

    background-origin:border-box;此时设置background-size:contain; 根据容器的边框定位 例如:容器的盒模型如下:设置了padding:20px;bord ...

  7. jquery ajax api

    执行一个异步的HTTP(Ajax)的请求. version added: 1.5jQuery.ajax( url, [ settings ] ) url一个用来包含发送请求的URL字符串. setti ...

  8. Hdu 2236 无题II 最大匹配+二分

    题目链接: pid=2236">Hdu 2236 解题思路: 将行和列理解为二分图两边的端点,给出的矩阵即为二分图中的全部边, 假设二分图能全然匹配,则说明 不同行 不同列的n个元素 ...

  9. 004Maven_Pom.xml文档的介绍

    很重要的一个文档,具体介绍如下:

  10. Spring Boot简化了基于Spring的应用开发

    Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的.产品级别的Spring应用. Spring Boot为Spring平台及第三方库提供开箱即用的设置,这样你就可 ...