通过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 和反向代理服务器,也是一个 ...
随机推荐
- locatin
//location对象 //初始url:http://www.wrox.com/WileyCDA: //将URL修改为:http://www.wrox.com/WileyCDA/#section1 ...
- Ubuntu 给应用程序添加桌面图标(本文以Eclipse为例)
这里以Eclipse为例: eclipse是下载的是解压就能用的,但是没有桌面图标就显得很无力了. 自己写了一个eclipse.desktop放到/usr/share/applications/目录下 ...
- 安装oracle11g 并且开启APEX 安装
1.Windows下Oracle安装图解----oracle-win-64-11g 详细安装步骤 - souvc - 博客园 oracle 11g 下载网址 一. Oracle 下载 官方下地 ...
- inline-block元素的空白间距解决方法<转>
使用inline-block来代替float进行布局,或者使用inline-block来实现元素的居中效果.有关于使用inline-block来代替float的讨论也蛮多的. 不过就是使用inline ...
- wpa wp2 psk的配置方式
For WPA-PSK ctrl_interface=/var/run/wpa_supplicant ctrl_interface_group=0 eapol_version=1 fast_reaut ...
- springboot集成模板引擎freemarker和thymeleaf
freemarkder和thymeleaf都是java的模板引擎,这里只介绍这两种模板引擎如何在sprongboot中配置: 1. freemarkder 1.1 在pom.xml中添加依赖包 < ...
- jQuery Easyui Datagrid相同连续列合并扩展
/** * author ____′↘夏悸 * create date 2012-11-5 **/$.extend($.fn.datagrid.methods, { autoMergeCells : ...
- JavaScript重载
在Javascript 中,每个函数都有一个隐含的对象arguments,表示给函数 实际传给的参数 ,那么我们可以用 arguments来实现函数的重载 <!DOCTYPE html PUBL ...
- MyBatis应用程序根据XML配置文件创建SqlSessionFactory
MyBatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory在根据配置,配置来源于两个地方,一处是配置文件,一处是Java代码的注解,获取一个Sq ...
- XML 是一种元语言, 可以用它来描述其他语言。
A.正确 B.错误 解答:B XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup L ...