通过Nginx反向代理实现IP分流
通过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分流的更多相关文章
- Nginx反向代理实现IP访问分流
通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或 ...
- nginx反向代理取得IP地址
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...
- Nginx 反向代理,IP、端口,项目路径变化的问题
这两天在云上部署公司项目,涉及到nginx反向代理,在部署完成测试,发现在下载文件的时候,无法下载,提示链接被拒绝. 假设nginx代理地址: http://121.53.21.188:9012/we ...
- Nginx 反向代理 一个IP代理多个域名,不区分端口,类似windows虚拟机。
简介: IP有限,所以我们以前使用端口来区分不同的虚拟主机,提供不同的WEB服务. 小范围还凑活,一旦规模扩大,地址记不住了吧?端口记不住了吧? 这个时候我们可以使用DNS,域名解析,毕竟记名字比记I ...
- nginx反向代理同一主机多个网站域名
nginx反向代理同一ip多个域名,给header加上host就可以了 proxy_set_header Host $host; nginx.conf例子 upstream ...
- nginx 反向代理实现负载均衡*配置实战
重要点: 1配置反向代理多虚拟主机节点服务器 2经过反向代理后的节点服务器记录用户IP 3与反向代理配置相关的更多参数说明 4根据URL目录地址转发 (1)根据URL中的目录地址实现代理转发(动静分离 ...
- 关于nginx反向代理后获取不到客户端的真实ip地址问题
前段时间在我的网站上用nginx做了一下反向代理,最近发现不能获取客户端ip了,都是拿到的127.0.0.1的本地ip... 通过查资料后,再去看了看我的配置文件,结果发现我没有如下配置: nginx ...
- nginx 反向代理 取得真实IP和域名
nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...
- Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例
原文地址:http://www.jb51.net/article/31844.htm Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 ...
随机推荐
- linux超级终端minicom的使用方法
===== 一.Minicom介绍 ===== Linux下的Minicom的功能与Windows下的超级终端功能相似,可以通过串口控制外部的硬件 设备.适于在linux通过超级终端对 ...
- Shape Control for .NET
Shape Control for .NET Yang Kok Wah, 23 Mar 2017 CPOL 4.83 (155 votes) Rate this: vote 1vote 2v ...
- [Application]Ctrl+C终止程序代码
代码如下: #include <stdio.h> #include <stdlib.h> #include <iostream> #include <sign ...
- 关于HTML5中hash部分API在历史管理,选项卡自动跳转中的一点使用
在群里最近有人提到如何处理在页面跳转之后,想要直接定位到相对应的选项卡的选项上,比如首页有登录和注册两个按钮,而登录注册页面有一对选项卡分别对应的是登陆和注册,想要实现的功能是点击登陆去到登录页的登录 ...
- SQL Server 数据库同步,订阅、发布、复制、跨服务器
随便说两句 折腾了一周,也算把数据库同步弄好了.首先局域网内搭建好,进行各种测试,弄的时候各种问题,弄好以后感觉还是挺简单的.本地测试好了,又在服务器进行测试,主要的难点就是跨网段同步,最后也解决了, ...
- librtmp将本地FLV文件发布到RTMP流媒体服务器
没有用到ffmpeg库 可以将本地FLV文件发布到RTMP流媒体服务器 使用librtmp发布RTMP流可以使用两种API:RTMP_SendPacket()和RTMP_Write(). 使用RTMP ...
- C++ 类的继承二(赋值兼容性原则)
//赋值兼容性原则 #include<iostream> using namespace std; class PointA{ public: PointA(){ x = ; y = ; ...
- 关于Unity的C#基础学习(四)
一.数组 存放同种类型的一组数据,同类+多个 1.定义 int [] int_set; int_set=new int[10]; //在堆上分配出10个int,int_set是数组的引用变量,指向1 ...
- 在其模块列表中有一个错误模块“ManagedPipelineHandler”。
C:\Windows\Microsoft.NET\Framework\v4.0.30319 命令行: aspnet_regiis -i
- Python3创建RIDE桌面快捷方式的另一种方法
今天尝试了一下Python3下安装Robot Framework,但是原来的Python2下创建ride快捷方式的方法都不奏效,启动不了ride.于是,转为VBS脚本的方式来间接创建快捷方式.毕竟,每 ...