Nginx 概述和缓存能力

官方说明

在这里插入图片描述

理解说明

Nginx是一个高性能的Web服务器和反向代理服务器,其设计思想和执行机制可以概括如下:

异步事件驱动:Nginx采用基于事件驱动的异步I/O模型,这意味着它能够处理大量并发连接而不会消耗太多的系统资源。

单线程模型:Nginx采用单线程模型来处理请求,这样可以避免线程切换带来的开销。同时,Nginx的事件机制也使得单线程能够管理多个并发连接。

高效的内存管理:Nginx使用内存池来管理内存分配和释放,从而避免了频繁的malloc/free操作,提高了性能。

模块化架构:Nginx具有灵活的模块化架构,可以通过编写自定义模块来扩展其功能。

反向代理和负载均衡:Nginx作为反向代理服务器,可以将客户端请求转发到多个后端服务器,并实现负载均衡。

静态文件服务:Nginx可以直接提供静态文件服务,无需调用脚本语言或其他应用程序。

NGINX IO

处理客户端请求时:当客户端发送请求到nginx服务器时,nginx会从网络套接字中读取请求,并将响应发送回客户端。
这种情况下的I/O操作涉及到网络I/O,包括读取和写入数据。

代理到后端服务器时:当nginx作为反向代理服务器时,它需要将请求转发到后端服务器并将响应返回给客户端。
这种情况下的I/O操作涉及到网络I/O以及可能的磁盘I/O(例如,在使用磁盘缓存时)。

写入日志文件时:nginx可以将访问日志和错误日志写入磁盘文件中,这种情况下的I/O操作是磁盘I/O。

读取静态文件时:当nginx通过HTTP请求提供静态文件时,它需要从磁盘中读取文件并将其发送给客户端,这种情况下的I/O操作是磁盘I/O。

缓存能力说明

Nginx缓存能力的落盘逻辑通常是通过将缓存数据保存到磁盘上实现的。Nginx可以使用proxy_cache_path指令来配置缓存路径和相关参数。

当请求到达Nginx时,它会检查是否有匹配的缓存项可用。如果有,则Nginx将直接从缓存中返回响应,而不需要将请求发送到后端服务器。如果没有,则Nginx将请求发送到后端服务器,并将响应保存到缓存中,以便下一次同样的请求可以直接从缓存中获取响应。

为了避免缓存数据占用过多内存,Nginx可以将缓存数据写入磁盘。具体来说,它可以使用proxy_cache_path指令中的keys_zone参数来指定一个共享内存区域来存储缓存键和元数据信息,然后使用disk指令来将缓存数据写入磁盘。

当Nginx将一个缓存项写入磁盘时,它会在缓存目录下创建一个与缓存键相关联的文件夹,然后将缓存文件保存在这个文件夹中。同时,Nginx还会将缓存项的元数据信息保存到缓存键对应的共享内存区域中,以便以后可以快速地检索和访问这个缓存项。

缓存配置说明

要在Nginx中设置Web缓存,可以使用proxy_cache指令。下面是一个示例配置:

http {
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
listen 80;
server_name example.com;

location / {
  proxy_cache my_cache;
  proxy_pass http://backend;
  proxy_cache_valid 200 5m;
  proxy_cache_valid 404 1m;
}

}
}
这个配置启用了一个名为"my_cache"的缓存区,并将其设置在"/path/to/cache"路径中。这里还设置了缓存过期时间,对于状态码200的响应,缓存保留5分钟;对于404的响应,缓存保留1分钟。此外,使用proxy_pass指令将请求转发到后端服务器。

需要注意以下几点:

在使用缓存之前,需要确保你的应用程序正确地设置了HTTP缓存头部,否则缓存可能不会生效。
应该根据实际情况调整缓存的过期策略,避免缓存的数据太旧或者占用过多的磁盘空间。
如果网站上有动态内容(如用户登录信息),则应该禁用缓存,以确保每个用户都能看到他们自己的数据。
在更新网站内容时,要记得清除缓存,否则用户可能会看到旧版本的页面。

TCP 代理

要在nginx中配置TCP代理,可以使用ngx_stream_core_module模块。下面是一个简单的例子:

stream {
    server {
        listen 12345;
        proxy_pass backend_server:12345;
    }
}

这个例子将监听本地端口12345,并将来自客户端的TCP连接代理到名为backend_server的后端服务器的12345端口。请记住,在使用TCP代理时,不能像HTTP代理一样修改请求或响应头。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P("Struggler") ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值