Nginx反向代理前端limit限速模块总结

关于ngx_http_limit_conn_module、ngx_http_limit_req_module 模块,echo(需要安装第三方模块 ngx_http_echo_module),map(默认安装ngx_http_map_module),geo(默认安装

ngx_http_geo_module)指令请查看官方文档,这里不再赘述。

有四种情况:

一,不过CDN限速配置

二,过CDN限速配置

三,不用白名单的不过CDN

四,不用白名单的过CDN

首先说明一个问题:

geo 里面的IP可以是单个的,也可以是一个网段的,只要符合CIDR标准就行。

map 里面的IP必须是当个,因为这里把他看着一个变量。

过CDN的白名单IP 只需要客户端IP就行,CND不需要,客户端IP得一行一行写

不过CDN的白名单IP 可以写一个网段

关键点 limited为空时不走限速。有值的,这里white_ip为1,走限速。

可以通过echo模块查看到(这两个都是没有走CDN的):

这个要限速,没有加入白名单

http://123.11.11.11/echo

http_x_forwarded_for:

remote_addr: 59.12.13.14

firstAddr:

clientRealIp: 59.12.13.14

white_ip: 1

limited: 59.12.13.14

这个不限速,加入了白名单

http://123.11.11.11/echo

http_x_forwarded_for:

remote_addr: 114.11.183.6

firstAddr:

clientRealIp: 114.11.183.6

white_ip: 0

limited:

一,不过CDN限速配置

nginx.conf里面的配置

geo $white_ip  {

default 1;

127.0.0.1 0;

59.12.13.14  0;

61.11.12.0/24  0;

......

}

map $white_ip $limited {

1  $binary_remote_addr;

0  "";

}

limit_conn_zone $limited zone=addr:10m;

limit_req_zone  $limited zone=one:10m rate=50r/s;

limit_req_log_level info;

limit_conn_log_level info;

具体域名vhosts配置文件里面的应用

location / {

limit_req  zone=one burst=5  nodelay;

limit_conn addr  100;

proxy_pass http://my_test_com;

}

二,过CDN限速配置

nginx.conf里面的配置

map $http_x_forwarded_for  $clientRealIpnormal {

""      $remote_addr;

~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;

}

map $http_http_cdn_src_ip $clientRealIp{

""   $clientRealIpnormal;

default $http_http_cdn_src_ip;

}

map $clientRealIp  $white_ip  {

default 1;

127.0.0.1 0;

59.12.13.14  0;

......

}

map $white_ip $limited {

1  $clientRealIp;

0  "";

}

limit_conn_zone $limited zone=addr:10m;

limit_req_zone  $limited zone=one:10m rate=30r/s;

limit_req_zone  $limited zone=two:10m rate=20r/s;

limit_req_log_level info;

limit_conn_log_level info;

具体域名vhosts配置文件里面的应用

location / {

limit_req  zone=two burst=1  nodelay;

proxy_pass http://mynew_test_com;

}

三,不用白名单的不过CDN

nginx.conf里面的配置

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_req_zone  $binary_remote_addr zone=one:10m rate=50r/s;

limit_req_log_level info;

limit_conn_log_level info;

具体域名vhosts配置文件里面的应用

location / {

limit_req  zone=one burst=5  nodelay;

limit_conn addr  100;

proxy_pass http://my_test_com;

}

四,不用白名单的过CDN

nginx.conf里面的配置

map $http_x_forwarded_for  $clientRealIp {

"" $remote_addr;

~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;

}

limit_conn_zone $clientRealIp_addr zone=addr:10m;

limit_req_zone  $clientRealIp_addr zone=one:10m rate=50r/s;

limit_req_log_level info;

limit_conn_log_level info;

具体域名vhosts配置文件里面的应用

location / {

limit_req  zone=one burst=5  nodelay;

limit_conn addr  100;

proxy_pass http://my_test_com;

}

时间: 2024-11-08 19:26:44

Nginx反向代理前端limit限速模块总结的相关文章

【nginx学习】nginx反向代理前端跨域问题

* 跨域简介: 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源. 注意:跨域限制访问,其实是浏览器的限制. 跨域类型: URL 说明 是否跨域 http://www.cnblogs.com/a.js http://www.a.com/b.js 不同域名 是 http://www.a.com/lab/a.js http://www.a.com/script/b.js 同一域

前端通过Nginx反向代理解决跨域问题

本文探讨了前端如何通过Nginx反向代理的方式解决跨域问题. 跨域 再次重申: 跨域是浏览器行为,不是服务器行为. 实际上,请求已经到达服务器了,只不过在回来的时候被浏览器限制了.就像Python他可以进行抓取数据一样,不经过浏览器而发起请求是可以得到数据,想到通过Nginx的反向代理来解决跨域问题. 代理 所谓代理就是在我们和真实的服务器之间有一台代理服务器,我们所有的请求都是通过它来进行转接的. 正向代理 正向代理就是我们访问不了Google,但是我在国外有一台vps,它可以访问Google

Nginx反向代理、缓存、 负载均衡、upstream以及fastcgi模块应用

Nginx反向代理,缓存, 负载均衡, upstream及fastcgi模块应用 Nginx版本为nginx-1.6.2-1.el6.ngx.x86_64.rpm可以去官网下载: http://nginx.org/packages/centos/6/x86_64/RPMS/ [[email protected] ~]# rpm -ivhnginx-1.6.2-1.el6.ngx.x86_64.rpm [[email protected] ~]# vim/var/www/html/index.ht

nginx反向代理-解决前端跨域问题

1.定义 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源.注意:跨域限制访问,其实是浏览器的限制.理解这一点很重要!!! 2.跨域访问示例 假设有两个网站,A网站部署在:http://localhost:81 即本地ip端口81上:B网站部署在:http://localhost:82 即本地ip端口82上. 现在A网站的页面想去访问B网站的信息,A网站页面的代码如下(这里

nginx反向代理

1. 操作系统 CentOS 6.4 x86_64 2.软件版本 Nginx 1.4.2 3.实验拓扑 注,实验拓扑见下文. 4.安装yum源 1 2 3 [root @nginx ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm [[email protected] ~]# rpm -ivh http://download.fedoraproject.org/

nginx 反向代理

关于什么是nginx以及为什么使用的理论网上还是有很多资料的,这里就不在赘述了.下面简单的说一下nginx的反向代理及实现 一.反向代理: 反向代理(Reverse Proxy)方式是指它根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端. 与正向代理不同,正向代理作为一个媒介将互联网上获取的资源返回给相关联的客户端,而反向代理是在服务器端(如Web服务器)作为代理使用, 而不是客户端. 客户端通过正向代理可以访问很多不同的资源,而反向代理是很多客户端都通

Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin

搭建nginx反向代理用做内网域名转发

基于域名的7层转发的实现(NAT+反向代理) 在实际办公网中,因为出口IP只有一个,要实现对外提供服务的话就必须得做端口映射,如果有多个服务要对外开放的话,这只能通过映射不同端口来区分,这在实际使用过程中非常的痛苦(记忆困难.一一对应关系也没有规律.访问的时候还得加端口),这个痛苦的问题用表格的形式来形象的描述如下: Public IP Public Port Number Internal IP Internal Port Number Note 1.1.1.1 80 192.168.1.10