目录
监听端口
假设代码中,我监听8003端口,意味着我可以通过访问8003端口来获得数据
- 将所有请求进行转发,即访问8003端口,nginx会将“访问8003端口”这一请求,转发到设定的地址
- 这就实现了,访问的是8003端口,实际上访问的却是转发的地址
nginx缓冲和缓存
缓冲
client端到server端(nginx和服务器端在同一片服务器)的网速慢,可以通过NGINX缓冲buffer来异步发送获取信息
- 缓冲是存在内存中的
- 发送请求到nginx
- nginx发送请求到server
- server返回连接所需信息到nginx的缓冲buffer中
- buffer中的数据慢慢发送给client,此时server的连接就被解放,可以给其他连接使用
server
| |...| 50mb/s
nginx(buffer)
| |...| 10kb/s
client
优点与作用
- 优化nginx到后端连接的响应时间(使用内部连接网速快)
- 通过更快释放server端的连接,来解决server端连接同时过多的问题,保证稳定向客户端传递响应
- 动态请求启用缓冲,来进行优化
缓存
可以通过NGINX缓存cache来发送获取信息
- 缓存是存在磁盘中的
- 发送请求到nginx
- nginx发送请求到server
- server一次返回所有信息到nginx的缓存cache中
- cache中的数据发送给client
- 此时若有其他连接发送相同请求,也无需再进行上述步骤,而是直接从缓存cache中获取信息
server
|
nginx(cache)
| |...| 10kb/s
client
优点与作用
- 减少server端的请求数量
- client发送相同请求时可以直接访问nginx缓存,因此提高了client端的响应速度
- 所以nginx一般将静态文件等需要多次访问的文件放入缓存(动态也可以,但动态一般放到Redis分布式缓存)
- Redis作为内存数据库,其读写性能远高于Nginx。
- 如果使用Nginx作为动态缓存,你需要在Nginx层面进行配置,并且可能需要编写特定的模块来处理动态内容的缓存。而Redis通常有成熟的客户端库,可以用来管理缓存,并且可以通过Redis的数据结构来控制缓存的策略。
- 而静态缓存方面,Nginx专门设计用于处理静态内容的分发,将这些内容放入Redis可能会增加不必要的复杂性和性能开销。
nginx负载均衡
-
轮循机制(负载均衡默认采用)
-
我们给监听的8003端口,配置了两个后台应用8080和8088
-
而第一次请求假设访问的是8080,登录后又将请求转发给8088
-
而在8088上没有登录,因此显示登录超时
-
-
最小连接:下一个请求分配给活动连接数最少的服务器(较为空闲的机器)
- 依然可能会出现上述问题
-
Ip-hash
- Ip作为key,同一Ip发送的请求分配给同一服务器
权重
能者多劳:有的服务器内存大,转发给它的请求就多
健康检查
反向代理中,如果某个后端服务器某个时间段内响应失败次数超过规定值,nginx将这个服务器标记为失败,并在之后一个周期内不再将请求发送给该失败的服务器
标签:缓存,请求,记录,端口,server,学习,nginx,client From: https://www.cnblogs.com/kwqlj/p/18311060