咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 436|回复: 0

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

[复制链接]
  • TA的每日心情
    无聊
    2019-6-2 14:11
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-4-30 18:49:55 | 显示全部楼层 |阅读模式
    主要是 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 地址。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持咔叽网单www.2nzz.com。

    原文地址:https://www.jb51.net/article/164952.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-28 19:31

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表