<代码> Nginx> 代码自带的模块支持对并发请求数进行限制,还有对请求来源进行限制。可以用来防止<代码> DDOS 代码>攻击。
阅读本文须知道<代码> nginx> 代码的配置文件结构和语法。
nginx.conf作为主配置文件
包括/etc/nginx/conf.d/* . conf读到这会把该目录的. conf也读进来
1.1全局性的和服务级别的
用户设置使用用户 worker_processes进行增大并发连接数的处理跟cpu保持一致八核设置八个 error_log nginx的错误日志 pid nginx服务启动时候pid
1.2事件对事件的模块
worker_connections一个进程允许处理的最大连接数 使用定义使用的内核模型
1.3服务器
根首页的路径 指数首页默认访问哪个页面 error_page 500 502 503 504/50 x。html错误页面前面的500是* *的http状态码的* * systemctl重启nginx。服务重启nginx systemctl重载nginx。服务不关闭服务柔和地重启
curl-v http://www.baidu.com在/dev/null # - v同时显示状态码等信息 nginx - v #显示nginx版本及配置文件等信息
日志类型:error.log和access.log
error.log(记录处理http请求的错误状态以及nginx本身服务的错误状态) access.log(每次http请求的访问状态)
log_format:设置了日志的记录格式,定义日志以什么样的样式记录到error.log, access.log中,log_format的配置只能配置在http模块中。
access_log配置在http中。
<代码> limit_ 代码> conn_module: TCP连接频率限制,一次TCP连接可以建立多次HTTP请求。
配置语法:
limit_conn_module语法 范围 说明 limit_conn_zone标识区=空间名:空间大小; http 用于声明一个存储空间 limit_conn空间名并发限制数; http服务器或位置 用于限制某个存储空间的并发数量 limit_conn_log_level日志等级; http服务器或位置 当达到最大限制连接数后,记录日志的等级 limit_conn_status状态码; http服务器或位置 当超过限制后,返回的响应状态码,默认是503
limit_conn_zone会声明一个<代码> 代码>空区域间来记录连接状态,才能限制数量。
<代码> 代码区是存储连接状态的空间,以键值对存储,通常以客户端地址binary_remote_addr美元<代码> 代码>作为<代码>键> 代码来标识每一个连接。
当<代码> 代码>空区域间被耗尽,服务器将会对后续所有的请求返回<代码> 503(服务暂时不可用)> 代码错误。
<代码> limit_req_mudule 代码>:<代码> HTTP> 代码请求频率限制,一次<代码> TCP> 代码连接可以建立多次<代码> HTTP> 代码请求。
配置语法:
limit_req_mudule语法 范围 说明 limit_req_zone关键区=空间名:空间大小率=每秒请求数; http 用于声明一个存储空间 limit_req区=空间名[破裂=队列数][nodelay]; http服务器或位置 用于限制某个存储空间的并发数量
这里的区域也是用来存储连接的一个空间。
破裂和nodelay
<代码>破裂代码>和<代码> nodelay> 代码对并发请求设置了一个缓冲区和是否延迟处理的策略。
先假设有如下<代码>区> 代码配置。
http { limit_req_zone binan_remote_addr带美元=req_zone: 1 m率=10 r/s; }
情况1:<代码> limit_req区=req_zone; 代码>
-
<李>第<代码> 代码> 1秒发送<代码>