一、nginx 访问限制

1、ngx_http_limit_req_module

(1) 作用:限制单位时间内来自特定IP的请求次数

(2) 启动请求频率限制

限制情况下进行访问

安装压测工具yum instally httpdtools

命令ab -n 100 –c 10 http://a.com/

ab apache 进行性能测试工具 ;-n 100 –c 10:总共100次,分10次发送给 a.com

启动限制,在主配置文件定义限制规则

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

limit_req_zone定义限制规则

● $binary_remote_addr远程客户端地址

● zone=req_zone:10m 创建一个req_zone存储区域,并分配10M的内存

rate=1r/s:请求速率限制

在 a 网站配置文件引用限制规则:

重启服务测试

观察错误日志

2023/09/14 21:06:02 [error] 3538#3538: *100 limiting requests, excess: 0.991 by zone “req_zone”, client: 192.168.198.133, server: a.com, request: “GET / HTTP/1.0”, host: “a.com

ngx_http_limit_req_module ngx_http_limit_conn_module 的区别

ngx_http_limit_req_module:请求频率限制,限制客户端请求的速率

ngx_http_limit_conn_module连接频率限制,限制某个 ip 同时建立的连接数量。

2常见网站压力测试工具

① Apache JMeter:Apache JMeter一个开源的Java应用程序用于执行各种性能测试,包括负载测试、压力测试、功能测试等。

② LoadRunner:HP LoadRunner是一款商业性能测试工具,用于模拟大规模用户负载并监测应用程序性能

③ Gatling:Gatling一个开源性能测试工具,使用Scala编写,专注于高并发场景

④ Apache Benchmark (ab):Apache Benchmark一个命令行工具,用于进行基本的HTTP压力测试。它通常与Apache Web服务器一起使用,但也可用于测试其他Web服务器

⑤ Locust:Locust是一个开源的Python性能测试工具,允许使用Python代码定义执行负载测试场景。

⑥ Siege:Siege是一个开源命令行工具,用于进行HTTP压力测试。具有简单语法配置,且易于使用

二、nginx 访问控制

1、基于主机ip 访问控制

(1) 模块ngx_http_access_module

(2) 语法

配置允许或禁止访问ip 地址网段

syntax: access_module [on | off] | deny address | allow address;

context: http, server, location, limit_except;

(3) 启用控制

启用访问控制后,只有特定主机才能访问 nginx 服务器

观察错误日志

2023/09/14 23:24:04 [error] 4916#4916: *2 access forbidden by rule, client: 192.168.198.128, server: a.com, request: “GET /favicon.ico HTTP/1.1″, host: “a.com”

2、基于用户username & password

(1) 网站基础认证模块ngx_http_auth_basic_module

(2) 语法

独立存储一个加密文件,在服务器调用加密文件

Syntax: auth_basic_user_file file;

Context: http, server, location, limit_except

(3) 启用控制

创建认证文件htpasswdcm /etc/nginx/conf.d/passwd user10

htpasswd:进行身份密码验证命令行工具

● –cm创建一个新的密码文件

● /etc/nginx/conf.d/passwd user10:密码文件的路径创建用户名

② 启动认证

提示信息认证文件路径

auth_basicnginx access test“;

auth_basic_user_file /etc/nginx/conf.d/passwd;

重启验证

客户机访问 a.com:

认证成功可进入 a 网站

若不进行身份验证,则网站返回状态码 401(客户端未提供有效身份信息

三、HTTP 协议

1、HTTP简介

(1) Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的 请求-响应 协议

(2) 工作流程客户端发送一个HTTP请求,服务端收到请求之后,根据请求做出相应的动作访问服务资源最后发送HTTP响应结果返回客户端

一个请求的开始到一个响应结束称为事务,当一个事务结束后会在服务端添加一条日志条目。

(3) 组件系统

客户端:通常是 Web 浏览器负责发送 HTTP 请求并接收 HTTP 响应

服务器:接收来自客户端的 HTTP 请求,处理请求并返回 HTTP 响应服务器通常由Web服务器软件构成,例如 Apache、Nginx 等;

③ Proxies/代理服务器:Proxies代理服务器是介于客户端和服务器之间的中间组件,用于处理HTTP请求和响应。

(4) 报文

① 请求报文请求报文客户端向服务器发送的报文,请求报文由请求行、请求头部和请求体三部分组成:

请求行:由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,用空格分隔例如,GET /index.html HTTP/1.1

GET:请求方法之一,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式

POST:POST方法可以在请求中包含一个请求体,以表单的形式向服务提交数据

② 响应报文:响应报文是服务器对请求报文的响应。响应报文包括响应行、响应头部和响应体三部分

响应行:包含HTTP协议版本状态码和状态消息例如,“HTTP/1.1 200 OK”,其中HTTP/1.1是协议版本,200是状态码,OK是状态消息。

2、URI

(1) URI 简介

统一资源标识符 (Uniform Resource Identifier,或URI) ,HTTP 请求的内容统称为”资源”,每个资源都由一个 URI 来进行标识,URI 包含 URL、URN。

(2) URL

统一资源定位符(Uniform Resource Locator),也称为网页地址,用于定位。

● URL 格式

协议网站协议是互联网上进行通讯、信息共享遵循的规则总称。

文本传输协议(HTTP)文件传输协议(FTP)远程终端协议(Telnet邮件处理协议(mailto)

② 主机:www.example.com(域名)或主机ip表示网络上的哪台主机发起请求。

端口表示访问 web 服务器上的资源的入口,HTTP 为 80,HTTPS 为 443

路径:/path/to/file.htmlweb 服务器上存放资源的路径

查询:?key1=value1&key2=value2 是提供给 Web 服务器的额外参数,用 & 符号分隔的键/值对列表

⑥ 片段:#SomewhereInTheDocument 是资源本身的某一部分的一个锚点。锚点代表资源内的一种超链接,它给予浏览器跳转到锚点指示的内容例如,在HTML文档上,浏览器将滚动到定义锚点的位置上。

原文地址:https://blog.csdn.net/weixin_61428407/article/details/132912102

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_25088.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注