千家信息网

Nginx请求限制和访问控制的实现

发表于:2025-02-24 作者:千家信息网编辑
千家信息网最后更新 2025年02月24日,本篇文章给大家分享的是有关Nginx请求限制和访问控制的实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、Nginx的请求限制1.
千家信息网最后更新 2025年02月24日Nginx请求限制和访问控制的实现

本篇文章给大家分享的是有关Nginx请求限制和访问控制的实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

一、Nginx的请求限制

1. HTTP协议的连接与请求

HTTP协议版本与连接关系

HTTP协议版本连接关系
HTTP1.0TCP不能复用
HTTP1.1顺序性TCP复用
HTTP2.0多路复用TCP复用

HTTP请求建立在一次TCP连接的基础上。

一次TCP连接至少可以产生一次HTTP请求,HTTP1.1版本以后,建立一次TCP连接可以发送多次HTTP请求。

1. 连接频率限制

ngx_http_limit_conn_module

语法

Syntax:    limit_conn_zone key zone=name:size;Default:  -Context:  httpSyntax:    limit_conn zone number;Default:  -Context:  http, server, location

用法

在nginx配置文件中的 http 下配置

http {  # ...其它代码省略...  # 开辟一个10m的连接空间,命名为addr  limit_conn_zone $binary_remote_addr zone=addr:10m;  server {    ...    location /download/ {      # 服务器每次只允许一个IP地址连接      limit_conn addr 1;    }  }}

2. 请求频率限制

ngx_http_limit_req_module

语法

Syntax:    limit_req_zone key zone=name:size rate=rate;Default:  -Context:  httpSyntax:    limit_req zone=name [burst=number] [nodelay];Default:  -Context:  http, server, location

用法

在nginx配置文件中的 http 下配置

http {  # ...其它代码省略...    # 开辟一个10m的请求空间,命名为one。同一个IP发送的请求,平均每秒只处理一次  limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;    server {      ...    location /search/ {      limit_req zone=one;      # 当客户端请求超过指定次数,最多宽限5次请求,并延迟处理,1秒1个请求      # limit_req zone=one burst=5;      # 当客户端请求超过指定次数,最多宽限5次请求,并立即处理。      # limit_req zone=one burst=5 nodelay;    }  }}

二、Nginx的访问控制

1. 基于IP的访问控制

ngx_http_access_module

语法

Syntax:    allow address | CIDR | unix: | all;Default:  -Context:  http, server, location, limit_exceptSyntax:    deny address | CIDR | unix: | all;Default:  -Context:  http, server, location, limit_except
address:IP地址,例如:192.168.1.1
CIDR:例如:192.168.1.0/24;
unix:Socket方式
all:所有

用法

在nginx配置文件中的 server 下配置

server {  # ...其它代码省略...  location ~ ^/index_1.html {    root  /usr/share/nginx/html;    deny 151.19.57.60; # 拒绝这个IP访问    allow all; # 允许其他所有IP访问  }  location ~ ^/index_2.html {    root  /usr/share/nginx/html;    allow 151.19.57.0/24; # 允许IP 151.19.57.* 访问    deny all; # 拒绝其他所有IP访问  }}

ngx_http_access_module 的局限性

当客户端通过代理访问时,nginx的remote_addr获取的是代理的IP

http_x_forwarded_for

http_x_forwarded_for = Client IP, Proxy1 IP, Proxy2 IP, ...

remote_addr 获取的是直接和服务端建立连接的客户端IP。
http_x_forwarded_for 可以记录客户端及所有中间代理的IP

2. 基于用户的登录认证

ngx_http_auth_basic_module

语法

Syntax:    auth_basic string | off;Default:  auth_basic off;Context:  http, server, location, limit_exceptSyntax:    auth_basic_user_file file;Default:  -Context:  http, server, location, limit_except

用法

要使用 htpasswd 命令,需要先安装httpd-tools

[root~]# yum -y install httpd-tools

使用 htpasswd 命令创建账号密码文件

[root/etc/nginx]# htpasswd -c ./auth_conf auth_rootNew password:Re-type new password:Adding password for user auth_root[root/etc/nginx]# ll auth_conf-rw-r--r-- 1 root root 48 7月  9 11:38 auth_conf[root/etc/nginx]# cat auth_confauth_root:$apr1$2v6gftlm$oo2LE8glGQWi68MCqtcN90

在nginx配置文件中的 server 下配置

server {  # ...其它代码省略...    location ~ ^/index.html {    root  /usr/share/nginx/html;    auth_basic "Auth access! Input your password!";    auth_basic_user_file /etc/nginx/auth_conf;  }}

修改后重新载入配置文件nginx -s reload

使用浏览器访问 http://192.168.33.88/index.html

输入正确的用户名和密码,即可正常访问。

ngx_http_auth_basic_module 的局限性

  • 用户信息依赖文件方式

  • 操作管理效率低下

以上就是Nginx请求限制和访问控制的实现,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

配置 文件 限制 客户 客户端 控制 代码 语法 复用 版本 用户 代理 处理 命令 地址 密码 局限性 方式 更多 次数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全防范提问 上海软件开发技术服务流程 全国中小学生网络安全知之 济宁ios软件开发哪家好 烽火通信研究生软件开发 关于科技互联网的名言 专升本网络技术可以报哪个专业 星际公民如何标记服务器 计算机软件开发趋势表格 网络安全需要什么数学基础 广东服务器机柜厂家现货 靓亮网络技术工作室 服务器扩展硬盘盘位 服务器远程桌面安全连接 杭州智酷网络技术有限公司 邯郸正规软件开发多少钱 碳交易所网络安全 戴尔存储服务器中小企业 网络安全系数很高吗 校园无线网络安全监测 配置与管理打印服务器 泰拉瑞亚怎么加入好友服务器 打开数据库失败 网络安全意识宣传大使证书 比mpp更好的数据库 中小学生网络安全知识图片 服务器远程协助和远程桌面区别 网络安全工作计划方案 加朝加网络技术有限公司 人民公安信息网络安全学院院长
0