Nginx 配置根据请求IP末段进行分流的方法

主要是 location 参数中的 if 判断的配置跳转,分流能减轻服务器的负载和压力,这种是一种非常常见的服务器部署架构。
根据 IP 最后一段的范围来跳转

#域名,ip,端口等信息请自行修改

upstream huaji-01.com {
 server 192.168.1.100:8080;
}

upstream huaji-02.com {
 server 192.168.1.200:8080;
}

server {

 listen 80;
 server_name www.huaji.com;

 location /
 {
  if ( $remote_addr ~* ^(.*)\.(.*)\.(.*)\.[1,125]$) {
    proxy_pass http://huaji-01.com;
    break;
  }

  proxy_pass http://huaji-02.com;
 }

}

以上为将 IP 末段为 1-125 的请求来源转发到 huaji-01.com,其他转向huaji-02.com,同样可以修改正则,例如

规则: $remote_addr ~* ^(.*)\.(.*)\.(.*)\.*[0268]$ 末尾为0268这样的偶数ip,跳转到 huaji-01.com,其他跳转到第二个域名;

规则:$remote_addr ~* ^(112)\.(.*)\.(.*)\.(.*)$ 开头为 112 的 IP 跳转到指定的域名;

规则:$http_x_forwarded_for ~* ^(112)\.(.*)\.(.*)\.(.*)$ 根据 forward 地址段来分流,开头为 112 的跳转到指定域名

if 指令条件判断的含义:

正则表达式匹配,其中:

~ 为区分大小写匹配

~* 为不区分大小写匹配

!~ 和 !~* 分别为区分大小写不匹配及不区分大小写不匹配

文件及目录匹配,其中:

-f 和 !-f 用来判断是否存在文件

-d 和 !-d 用来判断是否存在目录

-e 和 !-e 用来判断是否存在文件或目录

-x 和 !-x 用来判断文件是否可执行

rewrite指令的最后一项参数为flag标记,flag标记有:

last 相当于 apache 里面的 [L] 标记,表示 rewrite。

break 本条规则匹配完成后,终止匹配,不再匹配后面的规则。

redirect 返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址。

permanent 返回 301 永久重定向,浏览器地址会显示跳转后的 URL 地址。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 通过Nginx反向代理实现IP访问分流的示例代码

    本文介绍了通过Nginx反向代理实现IP访问分流的示例代码,分享给大家.具体如下: 通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或2或6的转发至test-01.com来执行,否则转发至test-02.com来执行. upstream test-01.com { server 192.168.1.100:8080; } upstream test

  • Nginx 配置根据请求IP末段进行分流的方法

    主要是 location 参数中的 if 判断的配置跳转,分流能减轻服务器的负载和压力,这种是一种非常常见的服务器部署架构. 根据 IP 最后一段的范围来跳转 #域名,ip,端口等信息请自行修改 upstream huaji-01.com { server 192.168.1.100:8080; } upstream huaji-02.com { server 192.168.1.200:8080; } server { listen 80; server_name www.huaji.com;

  • nginx配置限制同一个ip的访问频率方法

    1.在nginx.conf里的http{}里加上如下代码: limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; 2.在需要限制并发数和下载带宽的网站配置server{}里加上如下代码: limit_conn perip 2; limit_conn perserver 20; limit_rate 100k; 补充说明下参数: $binary_rem

  • 浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法

    1,心血来潮,把ThinkPHP项目部署到了nginx上,以上是在apache上跑的.突然发现nginx不支持pathinfo功能,难怪在TP中调怎么都没管用. 2,开始上文件了,比网上其他一些杂的好多了: server { listen 80; #listen [::]:80; server_name www.tp.com tp.com; index index.html index.htm index.php default.html default.htm default.php; roo

  • Nginx配置跨域请求Access-Control-Allow-Origin * 详解

    前言 当出现403跨域错误的时候 No 'Access-Control-Allow-Origin' header is present on the requested resource,需要给Nginx服务器配置响应的header参数: 一. 解决方案 只需要在Nginx的配置文件中配置以下参数: location / { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET

  • nginx配置IP白名单的详细步骤

    目录 1.添加IP白名单文件 2.配置nginx.conf 3.编辑白名单的提示导航页面 补充:添加白名单后nginx报错: 总结 分析nginx访问日志,有哪些IP访问过nginx. 命令参考:awk '{print $1}' logs/access.log | sort | uniq -c | sort -nr -k1 输出的效果案例: 1053 192.168.3.15893 192.168.3.10818 192.168.0.8 1.添加IP白名单文件 在nginx目录的 conf 中添

  • 详解nginx配置url重定向-反向代理

    本文系统:Centos6.5_x64 三台主机:nginx主机,hostname: master.lansgg.com  IP: 192.168.10.128             apache主机,hostname: client1.lansgg.com IP:  192.168.10.129 一.nginx 地址重定向 二.nginx 反向代理 1.地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术.常用在把一串很长的网址,转成较短的网址.因为当要传播某网站时,常常因为网址

  • nginx配置虚拟主机vhost的方法详解

    前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同. nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机的几个地址,应该是都指向nginx所在的ip地址,虚拟主机功能才能正常. 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 方案 例如配置文件位于: /opt/nginx/conf/nginx.conf 在http {}的最后,添加如下行: include vhosts/*.con

  • 禁止IP访问网站的多种方法分享(linux,php,nginx,apache)

    PHP禁止某个IP或IP段访问 废话不多说,客官请看: <? //禁止某个IP $banned_ip = array ( "127.0.0.1", //"119.6.20.66", "192.168.1.4" ); if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) ) { die ("您的IP禁止访问!"); } //禁止某个IP段 $ban_ran

  • Nginx配置详解(推荐)

    序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器.支持FastCGI.SSL.Virtual Host.URL Rewrite.Gzip等功能.并且支持很多第三方的模块扩展. Nginx的稳定性.功能集.示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站.

随机推荐