通过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 和反向代理服务器,也是一个 ...
随机推荐
- 0072 Java中的泛型--泛型是什么--泛型类--泛型方法--擦除--桥方法
什么是泛型,有什么用? 先运行下面的代码: public class Test { public static void main(String[] args) { Comparable c=new ...
- 用Linux中man命令查询C函数
大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数.可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想 ...
- PHP——数组中的each(),list()和while循环遍历数组
.while遍历 在while()语句每次循环中,each()语句将当前数组元素的键,赋给list()函数的第一个参数变量$key.并将当前数组元素中的值,赋给list()函数中的第二个参数变量$va ...
- ajax——优化0126(增删改查:添加查看详情,返回结果类型为JSON型,在窗口显示)
效果: 鼠标点击查看详情时 数据库: 0126.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- kickstart安装步骤
1.1 环境说明 [root@test ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@test ~]# uname -r 2 ...
- golang 环境bash 以及shell
standard_init_linux.go:178: exec user process caused "no such file or directory" 2018年04月2 ...
- java调用kettle_实现(2)
(1).参照“java调用kettle_导入jar包(1)”,应用etl工具下lib里的所有jar (2). 最近要对一个系统的数据同步到另一个系统中,要求新系统的数据结果完成之后,实时同步到另一个系 ...
- 关于为空必填js判断
为了减少一不必要的if逻辑判断,自已写了一个方法 $(function () { $("#btnAdd").click(function () { var strLinValu = ...
- php json包 Services_JSON-1.0.2 1 ---one
- 002Maven_第一个Maven演示
第一步. 首先建立Hello项目同时建立Maven约定的目录结构 Hello --src -----main ----------java ----------reso ...