千家信息网

Nginx请求限制和访问控制怎么实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"Nginx请求限制和访问控制怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Nginx请求限制和访问控制怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
千家信息网最后更新 2026年11月03日Nginx请求限制和访问控制怎么实现

本文小编为大家详细介绍"Nginx请求限制和访问控制怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Nginx请求限制和访问控制怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

一、nginx的请求限制

1. http协议的连接与请求

http协议版本与连接关系

http协议版本连接关系
http1.0tcp不能复用
http1.1顺序性tcp复用
http2.0多路复用tcp复用

http请求建立在一次tcp连接的基础上。

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

1. 连接频率限制

语法

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. 请求频率限制

语法

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的访问控制

语法

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. 基于用户的登录认证

语法

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安全错误 数据库的锁怎样保障安全 北京路客互联网科技有限公司 互联网科技媒体 重庆科技学院互联网 江苏南京365互联网科技 互联网金融中的现代科技 厦门千工互联网科技有限公司 和信科技工业互联网 广州市恰铎互联网科技有限公司 坤平互联网科技 呼和浩特新华互联网科技学院 链环科技传统企业怎么转型互联网 科技赋能视角下互联网保险发展 产业互联网科技服务公司 工业互联网科技创业 中国科技和美国互联网 互联网科技的前景 互联网科技博主张洲 山东蛋芒互联网科技有限公司 数字科技和互联网金融哪个好 承德科技产业互联网平台 奇酷互联网络科技 深圳齐家互联网科技 融势互联网科技 互联网高科技股票 镁科技互联网资讯平台 盛创互联网科技有限公司 荆州市昕露互联网络科技有限公司 河南住房之家互联网科技 锡山区互联网智能科技产品供应 雨阳互联网卡科技有限公司
0