文档章节

Nginx严格访问代理HTTP资源

Leech
 Leech
发布于 2016/08/08 15:16
字数 1086
阅读 74
收藏 0

1    严格访问

访问能基于客户端的IP地址允许或拒绝或使用基于HTTP验证。

为了允许或拒绝从某个地址及或所有地址的访问,使用allow和deny指令:

location / {

    deny 192.168.1.2;

    allow 192.168.1.1/24;

    allow 127.0.0.1;

    deny all;

}

 为了启用验证,使用auth_basic指令。用户要么输入有效的用户名和密码获取网站的访问。用户名和密码必须在auth_basic_user_file指令命名的文件中列出。

server {

    ...

    auth_basic "closed website";

    auth_basic_user_file conf/htpasswd;

}

 你能让网站的一些区域没有验证即使你需要整个网站验证。在非验证区域配置块中,在auth_basic指令中包括off参数取消继承外部配置级别设置。例如,限制整个网站访问,但有些位置可以公开:

server {

    ...

    auth_basic "closed website";

    auth_basic_user_file conf/htpasswd;

 

    location /public/ {

        auth_basic off;

    }

}

为了联合IP地址和验证,使用satisfy指令。默认,设置为all,因此客户端满足这两种类型的条件授予访问权限。当satisfy指令设置为any,至少满足一个条件授予访问权限。因此,如果IP地址是允许的,未验证的用户可以访问,反之亦然。

 location / {

    satisfy any;

 

    allow 192.168.1.0/24;

    deny  all;

 

    auth_basic           "closed site";

    auth_basic_user_file conf/htpasswd;

}

2    限制访问

可以限制:

  • 每个键值的连接数(例如,每个IP地址)

  • 每个键值请求速率(在1秒/分钟期间允许处理的请求数)

  • 连接的下载速度

注意,IP地址能在NAT设备后共享,因此通过IP地址应该是明智的。

2.1    限制连接数

为了限制连接数,首先使用limit_conn_zone指令定义键并设置共享内存区域参数(worker进程将使用该区域共享键值计数器)。作为第一个参数,指定表达式计算为键。第二个参数,指定区域的名字和大小。

limit_conn_zone $binary_remote_address zone=addr:10m;

 第二,使用limit_conn指令应用location虚拟服务器或整个http上下文的限制。指定共享内存区域的名字作为第一个参数,允许每个键的连接作为第二个参数。

location /download/ {

    limit_conn addr 1;

}

连接数在IP地址基础上的限制,因为$binary_remote_address变量用作键。通过使用$server_name变量限制指定服务器连接数:

http {

    limit_conn_zone $server_name zone=servers:10m;

 

    server {

        limit_conn servers 1000;

    }

}

 2.2    限制请求速率

为了限制请求速率,首先设置键和共享内存区域保存计数器。

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

rate参数能指定每秒的请求数(r/s)或没分钟的请求数(r/m)。

一旦定义共享内存区域,使用limit_req指令在虚拟服务器或location(或全局,如果需要)为了限制请求速度:

location /search/ {

    limit_req zone=one burst=5;

}

 如果速率超过限制,请求被放入队列延迟处理。burst参数设置等待处理的最大请求数。超过burst限制的请求Nginx响应503错误。

如果burst期间不需要延迟,添加nodelay参数。

limit_req zone=one burst=5 nodelay;

2.3    限制带宽

为了限制每个连接的带宽,使用limit_rate指令:

location /download/ {

    limit_rate 50k;

}

使用该设置,客户端将能够通过单个连接下载内容速度最大为每秒50千字节。然而,客户端打开各种连接。因此,如果目标是组织下载速度大于指定值,连接的数量也应该限制。例如,每个IP地址一个连接(如果共享区域使用上面指定的):

location /download/ {

    limit_conn addr 1;

    limit_rate 50k;

}

为了只在客户端下载某一数据之后利用限制,使用limit_rate_after指令。合理允许客户端快速下载某些数据(例如,文件头——电影索引),限制下载剩下数据的速率(让用户看电影,不下载)。

limit_rate_after 500k;

limit_rate 20k;

下面例子显示连接数和带宽限制联合配置。每个客户端地址允许最大连接数为5,适合现代浏览器打开同时打开三个连接的情况。与此同时,服务下载的location只允许一个连接:

http {

    limit_conn_zone $binary_remote_address zone=addr:10m

 

    server {

        root /www/data;

        limit_conn addr 5;

 

        location / {

        }

 

        location /download/ {

            limit_conn addr 1;

            limit_rate 1m;

            limit_rate 50k;

        }

    }

}

© 著作权归作者所有

Leech
粉丝 21
博文 277
码字总数 586305
作品 0
武汉
架构师
私信 提问
【Nginx学习05】nginx 联合tomcat实现动静分离

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011939264/article/details/85567197 前言 Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是...

程小二
2019/01/01
0
0
Nginx配置proxy_pass

nginx配置proxypass,需要注意转发的路径配置 1、location /test/ { proxypass http://t6:8300; } 2、location /test/ { proxypass http://t6:8300/; } 上面两种配置,区别只在于proxypass转......

ustbgaofan
2015/11/02
79
0
Nginx快速入门视频课程——笔记

视频课程链接:http://edu.51cto.com/course/14606.html Nginx,主讲:汤小洋 一、Nginx简介 1. Nginx是什么? Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/S...

汤小洋
2018/08/13
0
0
nginx 入门、安装与简单使用

本文内容: 1. nginx 简介 2. nginx 安装 3. nginx 简单使用 一、Nginx 的三大功能 1.HTTP服务器 Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端...

辣妈程序媛
2018/03/11
94
0
nginx反向代理解决跨域问题

nginx的作用 1.代理 2.web静态服务器 代理(proxy) 允许一个网络终端(一般为客户端),通过这个服务于另一个网络终端(一般为服务器)进行非直接的连接;提供代理服务的电脑系统或其他类型的网络终...

funnycoderstar
2018/05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

序列化、反序列化和transient关键字的作用

引言 序列化:将一个对象转换成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。 反序列化:将字节数组重新构造成对象。 将 Java 对象序列化为二进制文件的 Java...

潦草的犀牛
30分钟前
39
0
聊聊artemis的maxDeliveryAttempts

序 本文主要研究一下artemis的maxDeliveryAttempts maxDeliveryAttempts activemq-artemis-2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/settings/impl/AddressSe......

go4it
47分钟前
37
0
heroku - 如何查看所有日志

我在heroku上有一个小应用程序。 每当我想看日志时,我都会去命令行做 heroku logs 这只能让我看到大约100行。 有没有办法在heroku上查看我们的应用程序的完整日志? #1楼 对于雪松堆栈,请...

javail
55分钟前
37
0
Spring AOP 创建增强类

AOP联盟为增强定义了org.aopalliance.aop.Advice接口,Spring支持5种类型的增强: 1)前置增强:org.springframework.aop.BeforeAdvice 代表前置增强,因为Spring 只支持方法级的增强,所有M...

onedotdot
57分钟前
41
0
将.apply()与'new'运算符配合使用。 这可能吗?

在JavaScript中,我想创建一个对象实例(通过new运算符),但是将任意数量的参数传递给构造函数。 这可能吗? 我想做的是这样的(但是下面的代码不起作用): function Something(){ //...

技术盛宴
今天
74
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部