Nginx的limit_req和limit_conn是可以实现限流的,那么limit_req和limit_conn的区别是什么?
在了解limit_req和limit_conn前先看下TCP和HTTP的区别。
一、TCP和HTTP的区别和联系
1、TCP是传输层协议,定义数据传输和连接方式的规范。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
2、HTTP 超文本传送协议(Hypertext Transfer Protocol )是应用层协议,定义的是传输数据的内容的规范。
HTTP协议中的数据是利用TCP协议传输的,特点是客户端发送的每次请求都需要服务器回送响应,它是TCP协议族中的一种,默认使用 TCP 80端口。好比网络是路,TCP是跑在路上的车,HTTP是车上的人。每个网站内容不一样,就像车上的每个人有不同的故事一样。
二、connection和request区别
1、connection是连接,即常说的tcp连接,通过三次握手而建立的一个完整状态机。建立一个连接,必须得要三次握手。
2、request是指请求,即http请求,tcp连接是有状态的,而构建在tcp之上的http却是无状态的协议
三、Nginx的limit_req和limit_conn的区别
那么在Nginx中
1、limit_conn
可以用来限制connection,比如同一个IP只能建立一个connection,但是可以发送多个request
2、limit_req
用来限制request,比如限制Ip,同一个IP处理请求的速度不超过每秒1个请求