一、nginx 访问限制
1、ngx_http_limit_req_module
安装压测工具:yum install –y httpd–tools
命令: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;
● $binary_remote_addr:远程的客户端地址
● zone=req_zone:10m 创建一个叫‘req_zone‘的存储区域,并分配10M的内存
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) 语法:
syntax: access_module [on | off] | deny address | allow address;
(3) 启用控制
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) 语法:
(3) 启用控制
① 创建认证文件:htpasswd –cm /etc/nginx/conf.d/passwd user10
● /etc/nginx/conf.d/passwd user10:密码文件的路径和创建的用户名
② 启动认证
若不进行身份验证,则网站返回状态码 401(客户端未提供有效身份信息)
三、HTTP 协议
1、HTTP简介
(1) Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的 请求-响应 协议。
(2) 工作流程:客户端发送一个HTTP请求,服务端收到请求之后,根据请求做出相应的动作访问服务器资源,最后发送HTTP响应把结果返回给客户端。
一个请求的开始到一个响应的结束称为事务,当一个事务结束后会在服务端添加一条日志条目。
① 客户端:通常是 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.html 是 web 服务器上存放资源的路径
⑤ 查询:?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进行投诉反馈,一经查实,立即删除!