Nginx系列教程(3)nginx缓存服务器上的静态文件

简介:

使用nginx缓存服务器上的静态文件

一、nginx缓存的优点

如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。
因为静态文件(比如css,js, 图片)中,很多都是不经常更新的。nginx使用proxy_cache将用户的请求缓存到本地一个目录。下一个相同请求可以直接调取缓存文件,就不用去请求服务器了。
毕竟,IO密集型服务的处理是nginx的强项。

二、如何进行设置

先上个栗子:

http{
    proxy_connect_timeout 10;
    proxy_read_timeout 180;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 96k;
    proxy_temp_file_write_size 96k;
    proxy_temp_path /tmp/temp_dir;
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;


    server {
        listen       80 default_server;
        server_name  localhost;
        root /mnt/blog/;

        location / {

        }

        #要缓存文件的后缀,可以在以下设置。
        location ~ .*\.(gif|jpg|png|css|js)(.*) {
                proxy_pass http://ip地址:90;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_cache cache_one;
                proxy_cache_valid 200 302 24h;
                proxy_cache_valid 301 30d;
                proxy_cache_valid any 5m;
                expires 90d;
                add_header wall  "hey!guys!give me a star.";
        }
    }

    # 无nginx缓存的blog端口
    server {
        listen  90;
        server_name localhost;
        root /mnt/blog/;

        location / {

        }
    }
}

因为我是在一台服务器上做试验,所以用了两个端口8090进行模拟两台服务器之间的交互。

80端口对接的是普通的域名(http://wangxiaokai.vip)访问。
90端口负责处理80端口代理过来的资源访问。
相当于90端口是源服务器,80端口是nginx反向缓存代理服务器。


接下来讲一下配置项:

2.1 http层设置

    proxy_connect_timeout 10;
    proxy_read_timeout 180;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 96k;
    proxy_temp_file_write_size 96k;
    proxy_temp_path /tmp/temp_dir;
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=10g;
  • proxy_connect_timeout 服务器连接的超时时间
  • proxy_read_timeout 连接成功后,等候后端服务器响应时间
  • proxy_send_timeout 后端服务器数据回传时间
  • proxy_buffer_size 缓冲区的大小
  • proxy_buffers 每个连接设置缓冲区的数量为number,每块缓冲区的大小为size
  • proxy_busy_buffers_size 开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。
  • proxy_temp_file_write_size 设置nginx每次写数据到临时文件的size(大小)限制
  • proxy_temp_path 从后端服务器接收的临时文件的存放路径
  • proxy_cache_path 设置缓存的路径和其他参数。被缓存的数据如果在inactive参数(当前为1天)指定的时间内未被访问,就会被从缓存中移除

2.2 server层设置

2.2.1 反向缓存代理服务器

    server {
        listen       80 default_server;
        server_name  localhost;
        root /mnt/blog/;

        location / {

        }

        #要缓存文件的后缀,可以在以下设置。
        location ~ .*\.(gif|jpg|png|css|js)(.*) {
                proxy_pass http://ip地址:90;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_cache cache_one;
                proxy_cache_valid 200 302 24h;
                proxy_cache_valid 301 30d;
                proxy_cache_valid any 5m;
                expires 90d;
                add_header wall  "hey!guys!give me a star.";
        }
    }
  • proxy_pass nginx缓存里拿不到资源,向该地址转发请求,拿到新的资源,并进行缓存
  • proxy_redirect 设置后端服务器“Location”响应头和“Refresh”响应头的替换文本
  • proxy_set_header 允许重新定义或者添加发往后端服务器的请求头
  • proxy_cache 指定用于页面缓存的共享内存,对应http层设置的keys_zone
  • proxy_cache_valid 为不同的响应状态码设置不同的缓存时间
  • expires 缓存时间

这里我设置了图片cssjs静态资源进行缓存。
当用户输入http://wangxiaokai.vip域名时,解析得到ip:port的访问地址。port默认为80。所以页面请求会被当前server截取到,进行请求处理。
当解析到上述文件名结尾的静态资源,会到缓存区获取静态资源。
如果获取到对应资源,则直接返回数据。
如果获取不到,则将请求转发给proxy_pass指向的地址进行处理。

2.2.2 源服务器

    server {
        listen  90;
        server_name localhost;
        root /mnt/blog/;

        location / {

        }
    }

这里直接处理90端口接受到的请求,到服务器本地目录/mnt/blog下抓取资源进行响应。

三、如何验证缓存是否有效

细心的读者应该发现,我在第二段栗子里,留了个彩蛋 add_header wall "hey!guys!give me a star."
add_header是用于在报头设置自定义的信息。
所以,如果缓存有效的话,那么静态资源返回的报头,一定会带上这个信息。

访问http://wangxiaokai.vip结果如下:

本系列往期文章参考

Nginx系列教程(1) nginx基本介绍和安装入门

Nginx系列教程(2)nginx搭建静态资源web服务器

相关文章
|
27天前
|
存储 网络安全 PHP
在阿里云服务器上如何搭建网站,网址怎么建站图文教程详解案例及步骤.
做好一个网站不仅需要我们对站点装修及内容发布,也需要我们学会对网站运营,如进行站长推送,将我们内容快速推送到各大搜索平台,有效的让用户能搜索到我们内容,或者需要在谷歌推广就必须对网站添加SSL证书,这样搜索域名的时候搜索框不会出现<不安全>字符在域名前面,以及运行网站要懂运维,出现BUG时要去及时解决查找原因.自始至终自身要不断学习网络相关知识,遇到问题方能迎刃而解. 本文结束,如还有不懂的同学可联系作者,倾力而为,祝您成功!
271 73
|
5天前
|
域名解析 弹性计算 安全
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
本文详细介绍了从注册阿里云账号到使用宝塔面板安装网站的完整流程,包括阿里云账号的企业认证、服务器购买与安全规则配置、宝塔面板的安装及网站部署等步骤。通过图文并茂的方式,帮助用户轻松完成阿里云服务器的搭建和管理。适合新手快速上手,实现网站从零到有的全过程。如果觉得有用,别忘了点赞收藏!
96 1
阿里云服务器安装宝塔面板、安装网站(新手图文教程)
|
7天前
|
缓存 负载均衡 应用服务中间件
Nginx缓存的相关知识
总的来说,Nginx的缓存机制是其高性能的重要保证之一,通过合理的配置和管理,可以使网站的访问速度得到大幅提升。
67 28
|
1月前
|
弹性计算 Linux 数据安全/隐私保护
2025最新幻兽帕鲁palworld服务器搭建教程:新手0基础,超简单~
阿里云提供2025年最新幻兽帕鲁游戏服务器申请购买及一键开服教程。支持4核16G(70元/月,8人)和8核32G(160元/月,20人)配置,带宽10M,ESSD云盘100GB。玩家只需选择配置、地域、操作系统并设置密码,系统自动部署游戏程序。本地安装STEAM客户端后,输入服务器IP和端口8211即可开始游戏。详细教程及更多问题解答请访问阿里云幻兽帕鲁游戏专区。
246 56
|
20天前
|
弹性计算 Linux 网络安全
阿里云服务器迁移中心SMC实战指南:跨平台业务迁移教程参考
现在越来越多的个人和企业用户选择将其他云平台或者服务商的业务迁移到阿里云,但是如何快速且安全完成迁移是很多用户比较关注的问题,我们可以选择使用阿里云提供的服务器迁移中心(Server Migration Center,简称SMC),这个产品是阿里云提供给您的迁移平台,专注于提供能力普惠、体验一致、效率至上的迁移服务,满足您在阿里云的迁移需求。本文为大家展示使用阿里云服务器迁移中心SMC将其他云平台业务迁移至阿里云的教程,以供参考。
|
2月前
|
弹性计算 Ubuntu Linux
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
在当今数据驱动的时代,快速部署和管理大模型成为企业的关键需求。阿里云提供了一键部署OpenWebUI+Ollama的便捷方案,支持本地大模型运行和管理。用户也可以选择连接阿里云百炼的在线模型。
一键部署OpenWebUI+Ollama到阿里云ECS,轻松运行DeepSeek!(保姆级教程)
|
1月前
|
弹性计算 Linux 数据安全/隐私保护
阿里云幻兽帕鲁联机服务器搭建全攻略,速来抄作业!2025新版教程
阿里云提供2025年最新幻兽帕鲁服务器申请购买及一键开服教程。4核16G配置支持8人,70元/月;8核32G配置支持20人,160元/月。选择配置、地域、操作系统后,点击【一键购买及部署】,约3分钟完成创建。本地安装STEAM客户端并登录,进入游戏选择多人模式,输入服务器IP和端口(8211),即可开始游戏。详细教程及更多问题解答请参考阿里云幻兽帕鲁游戏专区。
104 20
|
1月前
|
弹性计算 Linux 数据安全/隐私保护
阿里云服务器搭建幻兽帕鲁【Palworld】游戏服详细教程,2025最新附价格表
阿里云提供2025年最新幻兽帕鲁游戏服务器申请与一键开服教程。支持4核16G(8人)和8核32G(20人)两种配置,系统自动部署游戏程序,本地安装STEAM即可开始游戏。价格低至70元/月起,选择地域、时长及操作系统后,2-3分钟完成创建。通过Steam客户端输入服务器IP与端口8211,轻松加入多人游戏,开启冒险之旅!更多详情见阿里云幻兽帕鲁专区。
|
1月前
|
Ubuntu 应用服务中间件 网络安全
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
|
1月前
|
域名解析 人工智能 API
使用阿里云服务器搭建自己的DeepSeek个人站点,3分钟尝鲜教程!
通过阿里云服务器,您可以0成本部署专属的DeepSeek网站。学生用户可领取300元代金券,实现免费部署;普通用户则可以选择99元/年的服务器方案。使用阿里云计算巢“DeepSeek个人站点-快速部署”服务,最快5分钟完成部署,无需编写代码。该服务集成了百炼API和Open WebUI,支持多种AI模型(如DeepSeek、Qwen-max、Llama等),并提供稳定、高性价比的个人专属AI网站体验。详情及教程请参考官方页面。
510 0

热门文章

最新文章

下一篇
oss创建bucket