nginx缓存配置
Nginx下关于缓存控制字段cache-control的配置说明-运维小结
Nginx下关于缓存控制字段cache-control的配置说明-运维⼩结HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。
在请求消息或响应消息中设置 Cache-Control并不会影响另⼀个消息处理过程中的缓存处理过程。
请求时的缓存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
响应消息中的指令包括: public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。
下⾯做⼀详细总结, ⽅便在以后的运维⼯作中理解和运⽤.⼀. 浏览器中关于Cache的3属性:1. Cache-Control:设置相对过期时间, max-age指明以秒为单位的缓存时间. 若对静态资源只缓存⼀次, 可以设置max-age的值为315360000000 (⼀万年). ⽐如对于提交的订单,为了防⽌浏览器回退重新提交,可以使⽤Cache-Control之no-store绝对禁⽌缓存,即便浏览器回退依然请求的是服务器,进⽽判断订单的状态给出相应的提⽰信息!Http协议的cache-control的常见取值及其组合释义:no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器.no-store: 不仅不能缓存, 连暂存也不可以(即: 临时⽂件夹中不能暂存该资源).private(默认): 只能在浏览器中缓存, 只有在第⼀次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器.public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等.max-age: 相对过期时间, 即以秒为单位的缓存时间.no-cache, private: 打开新窗⼝时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器.- private, 正数的max-age: 后退时候不会访问服务器.- no-cache, 正数的max-age: 后退时会访问服务器.2. Expires:设置以分钟为单位的绝对过期时间, 优先级⽐Cache-Control低, 同时设置Expires和Cache-Control则后者⽣效. 也就是说要注意⼀点: Cache-Control的优先级⾼于Expiresexpires起到控制页⾯缓存的作⽤,合理配置expires可以减少很多服务器的请求, expires的配置可以在http段中或者server段中或者location段中. ⽐如控制图⽚等过期时间为30天, 可以配置如下:location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {root /var/www/img/;expires 30d;}再⽐如:location ~ \.(wma|wmv|asf|mp3|mmf|zip|rar|swf|flv)$ {root /var/www/upload/;expires max;}3. Last-Modified:该资源的最后修改时间, 在浏览器下⼀次请求资源时, 浏览器将先发送⼀个请求到服务器上, 并附上If-Unmodified-Since头来说明浏览器所缓存资源的最后修改时间, 如果服务器发现没有修改, 则直接返回304(Not Modified)回应信息给浏览器(内容很少), 如果服务器对⽐时间发现修改了, 则照常返回所请求的资源.需要注意:1) Last-Modified属性通常和Expires或Cache-Control属性配合使⽤, 因为即使浏览器设置缓存, 当⽤户点击”刷新”按钮时, 浏览器会忽略缓存继续向服务器发送请求, 这时Last-Modified将能够很好的减⼩回应开销.2) ETag将返回给浏览器⼀个资源ID, 如果有了新版本则正常发送并附上新ID, 否则返回304,但是在服务器集群情况下, 每个服务器将返回不同的ID, 因此不建议使⽤ETag.以上描述的客户端浏览器缓存是指存储位置在客户端浏览器, 但是对客户端浏览器缓存的实际设置⼯作是在服务器上的资源中完成的. 虽然上⾯介绍了有关于客户端浏览器缓存的属性, 但是实际上对这些属性的设置⼯作都需要在服务器的资源中做设置. 通常有两种操作⼿段对浏览器缓存进⾏设置, ⼀个是通过页⾯指令声明来设置, 另外⼀个是通过编程⽅式来设置.下⾯是相关页⾯设置Cache-Control头信息的⼏个简单配置:例⼀:if ($request_uri ~* "^/$|^/search/.+/|^/company/.+/") {add_header Cache-Control max-age=3600;}个⼈理解的max-age意思是:客户端本地的缓存,在配置的⽣存时间内的,客户端可以直接使⽤,超出⽣存时间的,到服务器上取新数据。
nginx缓存配置及开启gzip压缩
nginx缓存配置及开启gzip压缩阅读⽬录⼀:nginx缓存配置在前⼀篇⽂章,我们理解过http缓存相关的知识点, 请看. 今天我们来学习下使⽤nginx服务来配置缓存的相关的知识。
nginx配置缓存的优点:可以在⼀定程度上,减少服务器的处理请求压⼒。
⽐如对⼀些图⽚,css或js做⼀些缓存,那么在每次刷新浏览器的时候,就不会重新请求了,⽽是从缓存⾥⾯读取。
这样就可以减轻服务器的压⼒。
nginx可配置的缓存⼜有2种:1)客户端的缓存(⼀般指浏览器的缓存)。
2)服务端的缓存(使⽤proxy-cache实现的)。
客户端的缓存⼀般有如下两种⽅式实现:协商缓存和强缓存。
具体理解什么是协商缓存或强缓存,可以看我之前的.在配置之前,我们来看下我们的项⽬基本架构如下:|----项⽬demo| |--- .babelrc # 解决es6语法问题| |--- node_modules # 所有依赖的包| |--- static| | |--- index.html # html页⾯| | |--- css # 存放css⽂件夹| | | |--- base.css # css⽂件,是从⽹上随便复制过来的很多css的| | |--- js # 存放js的⽂件夹| | | |--- jquery-1.11.3.js # jquery ⽂件| | |--- images # 存放images⽂件夹| | | |-- 1.jpg # 图⽚对应的⽂件| |--- app.js # 编写node相关的⼊⼝⽂件| |--- package.json # 依赖的包⽂件package.json 代码如下:{"name": "xxx","version": "1.0.0","description": "","main": "index.js","scripts": {"dev": "nodemon ./index.js"},"license": "MIT","devDependencies": {},"dependencies": {"@babel/core": "^7.2.2","@babel/preset-env": "^7.2.3","@babel/register": "^7.0.0","koa": "^2.7.0","koa-static": "^5.0.0","nodemon": "^1.19.0","path": "^0.12.7"}}app.js 代码如下:import path from 'path';import Koa from 'koa';//静态资源中间件import resource from 'koa-static';const app = new Koa();const host = 'localhost';const port = 7878;e(resource(path.join(__dirname, './static')));app.listen(port, () => {console.log(`server is listen in ${host}:${port}`);});index.js 代码如下:require('@babel/register');require('./app.js');index.html 代码如下:<!DOCTYPE HTML><html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>前端缓存</title><style>.web-cache img {display: block;width: 100%;}</style><link href="./css/base.css" rel="stylesheet"/><script type="text/javascript" src="./js/jquery-1.11.3.js"></script></head><body><div class="web-cache">1111112224546664456999000<img src="./images/1.jpg"/></div></body></html>如上就是⼀些基本的代码结构,当我们在nginx没有配置任何的时候,我们直接在命令⾏中运⾏ npm run dev 的时候,然后我们在浏览器访问 http://localhost:7878/ 时候,可以看到不管我刷新多少次,浏览器下图⽚,css,js所有的请求都会返回200,不会有任何缓存。
fastcgi_cache 原理
fastcgi_cache 原理FastCGI Cache是一种用于加速Web服务器性能的缓存机制,它通过缓存动态生成的内容,减少服务器的负载,提高网站的响应速度。
本文将介绍FastCGI Cache的原理及其工作流程。
一、FastCGI Cache的原理FastCGI Cache是基于Nginx的缓存模块,它通过将动态生成的网页内容缓存在内存中,从而避免了每次请求都需要重新生成页面的开销。
当用户发送请求时,Nginx会先检查缓存中是否存在对应的页面,如果存在,则直接返回缓存的内容,而不需要执行后端的动态脚本。
这样就大大提高了服务器的处理效率和网站的响应速度。
二、FastCGI Cache的工作流程1. 配置缓存区域:在Nginx的配置文件中,需要指定一个缓存区域来存储缓存的内容。
可以通过指令"fastcgi_cache_path"来配置缓存路径、缓存大小和缓存时间等参数。
2. 缓存键值对:当有用户发送请求时,Nginx会根据请求的URL和一些其他参数生成一个唯一的缓存键值对。
这个键值对将作为缓存的索引,用于存储和检索缓存的内容。
3. 缓存命中检查:在接收到用户请求后,Nginx会先检查缓存中是否存在对应的缓存内容。
如果存在,则直接返回缓存的内容,这样就避免了后端动态脚本的执行。
4. 缓存未命中:如果缓存中不存在对应的缓存内容,Nginx会将请求转发给后端的应用服务器,执行动态脚本生成页面,并将生成的页面存储到缓存中。
5. 缓存更新:当缓存内容过期或者被修改时,Nginx会自动更新缓存。
在更新缓存时,可以使用"proxy_cache_bypass"指令来指定不需要缓存的请求。
6. 缓存失效:当缓存内容失效时,Nginx会将请求转发给后端的应用服务器,重新生成页面,并更新缓存内容。
三、FastCGI Cache的优势1. 提高网站的响应速度:FastCGI Cache可以减少服务器的负载,提高网站的响应速度。
NGINX性能优化技巧
NGINX性能优化技巧优化NGINX的响应性能可以通过多种方式实现,以下是一些常见的优化技巧:1.启用Gzip压缩:在NGINX配置文件中启用Gzip压缩,可以有效地减少传输的数据量,提高页面加载速度。
可以通过gzip指令进行配置。
2.调整缓存设置:NGINX内置了缓存功能,可以通过配置缓存指令来缓存静态文件和动态内容。
合理地配置缓存,可以在用户再次访问时直接从缓存中读取,减少对后端服务器的请求,提高响应速度。
3.调整并发连接数:根据实际情况调整NGINX的并发连接数限制,以支持更多的并发请求。
可以通过修改worker_processes参数进行调整。
4.优化SSL/TLS加密:如果使用SSL/TLS加密,可以通过优化加密算法和密钥长度等方式来提高安全性,同时减少加密对性能的影响。
5.调整请求头大小:如果客户端发送的请求头较大,可能会导致请求被截断。
可以根据实际情况调整请求头大小限制,以支持更大的请求头。
6.优化事件驱动模型:NGINX使用事件驱动的架构,可以高效地处理并发连接。
但需要注意的是,事件驱动模型本身也有一些开销。
可以通过优化事件驱动模型来提高性能,例如调整事件驱动模型的参数、使用更高效的事件驱动库等。
7.调整worker_processes参数:worker_processes参数定义了NGINX可以同时处理多少个工作进程。
根据服务器的CPU核心数和负载情况,可以适当调整该参数以提高NGINX的性能。
8.启用keepalive连接:通过启用keepalive连接,可以在单个TCP连接上处理多个HTTP请求,减少了连接建立的开销,提高了性能。
可以在NGINX配置文件中通过keepalive指令进行配置。
9.调整TCP参数:在操作系统层面,可以通过调整TCP参数来优化网络性能。
例如,调整TCP的初始拥塞窗口大小、初始重传超时时间等。
这些参数的调整可以根据实际情况进行优化。
10.合并小文件:对于大量小文件的访问,可以通过合并小文件为单个文件,减少对文件的访问次数,提高性能。
nginx server配置用法
nginx server配置用法Nginx是一个高性能的开源Web服务器,它也可以用作反向代理服务器、负载均衡器和HTTP缓存。
在使用Nginx时,配置文件是至关重要的,因为它决定了服务器的行为和性能。
以下是关于Nginx服务器配置的一些常见用法:1. 虚拟主机配置,Nginx允许您配置多个虚拟主机,每个虚拟主机可以有自己的域名、根目录和其他设置。
您可以通过在配置文件中使用server块来定义不同的虚拟主机,并在每个server块中指定相应的配置。
2. 反向代理配置,Nginx可以用作反向代理服务器,将客户端的请求转发给后端服务器,并将后端服务器的响应返回给客户端。
您可以使用proxy_pass指令来配置反向代理,同时还可以设置其他参数来控制缓存、负载均衡和超时等行为。
3. 负载均衡配置,如果您有多个后端服务器,您可以使用Nginx来实现负载均衡,以均衡流量并提高系统的可靠性和性能。
Nginx提供了多种负载均衡算法,如轮询、IP哈希、最小连接数等,您可以根据实际需求选择合适的算法。
4. SSL/TLS配置,保护数据传输对于Web服务器来说至关重要,Nginx可以通过配置SSL/TLS来实现加密通信。
您可以使用ssl_certificate和ssl_certificate_key指令来指定SSL证书和私钥的位置,并通过其他指令来配置加密协议版本、密码套件和其他安全设置。
5. 缓存配置,Nginx还可以用作HTTP缓存服务器,以加速内容传输并减轻后端服务器的负载。
您可以通过proxy_cache_path和proxy_cache指令来配置缓存路径和缓存规则,以及使用其他指令来控制缓存的行为和生命周期。
总之,Nginx的配置非常灵活且功能丰富,可以根据实际需求进行各种定制化的配置。
当然,在进行配置时,一定要注意语法的正确性和逻辑的合理性,以确保服务器的稳定性和安全性。
希望以上信息能够帮助您更好地理解Nginx服务器配置的用法。
nginx静态文件缓存的解决方案
nginx静态⽂件缓存的解决⽅案nginx的⼀⼤功能就是完成静态资源的分离部署,减轻后端服务器的压⼒,如果给这些静态资源再加⼀级nginx的缓存,可以进⼀步提升访问效率。
第⼀步:添加nginx.conf的http级别的缓存配置##cache##proxy_connect_timeout 500;#跟后端服务器连接的超时时间_发起握⼿等候响应超时时间proxy_read_timeout 600;#连接成功后_等候后端服务器响应的时间_其实已经进⼊后端的排队之中等候处理proxy_send_timeout 500;#后端服务器数据回传时间_就是在规定时间内后端服务器必须传完所有数据proxy_buffer_size 128k;#代理请求缓存区_这个缓存区间会保存⽤户的头信息以供Nginx进⾏规则处理_⼀般只要能保存下头信息即可proxy_buffers 4 128k;#同上告诉Nginx保存单个⽤的⼏个Buffer最⼤⽤多⼤空间proxy_busy_buffers_size 256k;#如果系统很忙的时候可以申请更⼤的proxy_buffers 官⽅推荐*2proxy_temp_file_write_size 128k;#proxy缓存临时⽂件的⼤⼩proxy_temp_path /usr/local/nginx/temp;#⽤于指定本地⽬录来缓冲较⼤的代理请求proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;#设置web缓存区名为cache_one,内存缓存空间⼤⼩为12000M,⾃动清除超过15天没有被访问过的缓存数据,硬盘缓存空间⼤⼩200g此处的重点在最后⼀句,缓存存储路径为:/usr/local/nginx/cache,levels=1:2代表缓存的⽬录结构为2级⽬录如下图,缓存会在/usr/local/nginx/cache⽬录下⽣成,包含2级⽬录,在之下就是缓存⽂件,测试的时候可以到该⽬录下查看缓存⽂件是否⽣成。
nginx缓存原理
nginx缓存原理Nginx是一款高性能的Web服务器和反向代理服务器,具有快速、可靠和强大的功能。
Nginx的缓存机制是其核心功能之一,可以显著提高网站的响应速度和性能。
Nginx的缓存原理基于HTTP协议,主要通过缓存服务器缓存静态内容,减少对后端服务器的请求次数,从而提高访问速度和性能。
以下是Nginx缓存的工作原理及其相关细节。
1. 缓存层次结构:Nginx的缓存层次结构一般包括Disk Cache(磁盘缓存)和Memory Cache(内存缓存)。
Disk Cache通常存储在硬盘上,用于缓存大型文件,而Memory Cache则存储在服务器的内存中,用于缓存小型文件和经常访问的内容。
2. 缓存区域:Nginx通过配置文件中的directive来定义缓存区域。
通过指定缓存区域的路径和大小,Nginx可以将缓存内容存储在指定的硬盘或内存中。
例如,可以通过以下配置创建一个缓存区域:```nginxproxy_cache_path /var/cache/nginx levels=1:2keys_zone=my_cache:10m max_size=10g inactive=60m;```上述配置指定了一个名为my_cache的缓存区域,将缓存内容存储在/var/cache/nginx目录下。
缓存最大容量为10GB,当内容在60分钟内未被访问时将被清除。
3. 缓存控制:Nginx通过Cache-Control和Expires响应头字段来控制缓存的行为。
通过在响应头中设置这些字段,Nginx可以指示客户端和其他缓存服务器缓存该内容的时间和规则。
例如,通过以下配置,Nginx将允许缓存该内容60分钟:```nginxadd_header Cache-Control "public, max-age=3600";```这将在响应头中添加一个Cache-Control字段,并指定内容可以被公共缓存服务器缓存,并在60分钟内不需要再次请求。
nginx图片缓存服务器配置文档
Nginx图片缓存服务器配置Nginx是目前非常流行的web服务器,它起源于俄罗斯。
它具有处理速度快,并发量大,占用资源极低等优点,尤其对于静态资源的处理更佳,有测试证明是apache的30倍。
现在已经广泛的应用于多家门户网站、中大型网站中,作为反向代理、图片缓存服务器等。
本例是结合张宴的blog(/nginx_cache/),做的变动。
主站是IIS7.5(192.168.36.70),用的是.net 3.5+sql 2005,用于处理aspx,ashx等动态网页程序,而网站的图片服务器为nginx(centos 5.6,IP:192.168.33.243).1.网站结构主站(iis 7.5)的网页结构为:注意:myimages目录,是nginx图片服务器的主目录,放到这里作为一个虚拟目录的原因,是在centos上做了一个samba,让windows共享到这个目录,方便主站.net程序对图片上传和管理。
更好的解决方案是,把所有的资源放到存储上。
Nginx图片服务器的目录结构为:注意:images是nginx服务器的主目录,images1和images2是图片服务器的分支目录,用于存放图片,更专业的做法,是用当前月份命名目录,更加方便管理图片。
proxy_cache_dir和proxy_temp_dir分别是作为nginx图片服务器的缓存目录和临时目录。
用户只要访问一次图片,nginx就会把图片缓存到proxy_cache_dir目录底下。
2.nginx图片服务器配置1. centos5.6上安装nginx.安装步骤如下:wget ftp:///pub/software/programming/pcre/pcre-8.00.tar.gztar zxvf pcre-8.00.tar.gzcd pcre-8.00/./configuremake && make installcd ../wget /files/ngx_cache_purge-1.0.tar.gztar zxvf ngx_cache_purge-1.0.tar.gzwget /download/nginx-0.8.32.tar.gztar zxvf nginx-0.8.32.tar.gzcd nginx-0.8.32/./configure --user=www --group=www --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_modulemake && make installcd ../注意:要建立www用户和www用户组2. 配置nginx的配置文件注意nginx的图片服务器访问地址为:192.168.33.243:8080,nginx缓存服务器为:192.168.33.243,故我们需要在Nginx上配置两个web服务器,让后一个缓存前一个,iis 主站的程序直接调用缓存服务器的图片,绕过了真实的图片服务器。
nginx cache基本指令
Nginx cache基本指令整理本文主要针对nginx的几个主要cache指令做一个简单的整理,另外部分指令做了实际测试,本文具体包括如下指令:proxy_cache,proxy_cache_bypass,proxy_cache_key,proxy_cache_lock,proxy_cache_lock_timeou t,proxy_cache_min_uses,proxy_cache_path,proxy_cache_use_stale,proxy_cache_valid,proxy_no_ cache更多相关内容:/nginx1.proxy_cachesyntax:proxy_cache zone|off;default:proxy_cache off;context:http,server,location定义一块共享内存区域用来进行缓存。
相同名称的缓存区域可以在多个地方使用。
Off 参数关闭从前一个级别配置中继承下来的缓存设置Nginx官方原文如下:Defines a shared memory zone used for caching.The same zone can be used in several places. The off parameter disables caching inherited from the previous configuration level.2.proxy_cache_bypassyntax:proxy_cache_bypass string...;default:—context:http,server,location定义一个条件,在这个条件成立后将不会从缓存中获取数据。
至少有一个字符串参数不为空,并且是不等于“0”,则响应不会从缓存中获取。
Nginx官方原文如下:Defines conditions under which the response will not be taken from a cache.If at least one value of the string parameters is not empty and is not equal to“0”then the response will not be taken from the cache:proxy_cache_bypass$cookie_nocache$arg_nocache$arg_comment;proxy_cache_bypass$http_pragma$http_authorization;Can be used along with the proxy_no_cache directive.3.proxy_cache_keysyntax:proxy_cache_key string;default:proxy_cache_key$scheme$proxy_host$request_uri;context:http,server,location给缓存数据定义一个键,例如proxy_cache_key"$host$request_uri$cookie_user";默认情况下,该指令的值的字符串proxy_cache_key$scheme$proxy_host$uri$is_args$args;Nginx官方原文如下:Defines a key for caching,for exampleproxy_cache_key"$host$request_uri$cookie_user";By default,the directive’s value is close to the stringproxy_cache_key$scheme$proxy_host$uri$is_args$args;4.proxy_cache_locksyntax:proxy_cache_lock on|off;default:proxy_cache_lock off;context:http,server,locationThis directive appeared in version1.1.12.当指令被指定时,根据proxy_cache_key指令确定的若干个或得出相同响应元素若干个请求仅仅有一个能被传递给后端的代理服务器(最终传递给应用服务器)去生成响应内容,生成后响应内容添加到cache中,其他请求从cache中获取数据。
Nginx与浏览器缓存的处理方法
Nginx与浏览器缓存的处理⽅法⼀、浏览器对缓存的处理:Internet选项 ★控制请求服务器策略:是忽略资源的缓存策略的情况下额外强制请求服务器的意思。
★检查存储的页⾯较新版本 1.每次访问⽹页时 不管是否有缓存、资源状态是否过期,都会再次请求服务器。
2.每次启动Internet Explorer时 不管是否有缓存、资源状态是否过期,都会再次请求服务器。
3.⾃动 ⼤体上和2是⼀样的,只是对于图⽚的策略有点不同。
4.从不 完全按照资源的缓存策略来请求服务器。
★ F5 刷新:请求服务端,但是会根据和服务器对⽐⽂件来确定是否下载 ★ Ctrl + F5刷新:⼀定会去服务器下载。
⼆、缓存控制策略 ★Last-Modified/If-Modified-Since要配合Cache-Control使⽤,Etag/If-None-Match也要配合Cache-Control使⽤。
ps:分布式系统⾥多台机器间⽂件的last-modified必须保持⼀致,以免负载均衡到不同机器导致⽐对失败 分布式系统尽量关闭掉Etag(每台机器⽣成的etag都会不⼀样) ★HTML通过meta的http-equiv属性控制浏览器缓存策略:通过设置Pragma和Cache-control和expires控制 ps:只能控制html的缓存策略,不能控制css/js/图⽚的缓存策略。
Cache-control的max-age和expires同时存在,那么先处理max-age。
Cache-control指定了no-cache后,max-age和expires。
Pragma: http 1.0 IE浏览器才识别,请求头中不会体现,但是确实有效果 Cache-control: http 1.1三、Nginx设置浏览器缓存★Nginx设置浏览器缓存:可以在http 、server、location节点中添加。
可以设置各种资源的缓存策略,不仅仅是HTML。
Nginx启用proxy_cache缓存的方法
Nginx启⽤proxy_cache缓存的⽅法顾名思义,proxy_cache 是⽤于 proxy 模式(⼀般也可称为反代)的缓存功能。
本⽂介绍其基本⽤法。
proxy_cache 在 Nginx 配置的 http 段、server 段(location 段)中分别写⼊不同的配置。
http 段中的配置⽤于定义proxy_cache 空间,server 段中的配置⽤于调⽤ http 段中的定义,启⽤对 server 的缓存功能。
http 段直接以本站的配置为例:proxy_cache_path /home/nginx/proxy_cache/cache levels=1:2 keys_zone=proxycache:60m max_size=120m inactive=2h use_temp_path=on;proxy_temp_path /home/nginx/proxy_cache/temp;proxy_cache_key $host$request_uri;其中:proxy_cache_path1. /home/nginx/proxy_cache/cache:定义 proxy_cache ⽣成⽂件的根路径2. levels:默认所有缓存⽂件都放在上⾯指定的根路径中,从⽽可能影响缓存的性能。
推荐指定为 2 级⽬录来存储缓存⽂件3. key_zone:这个的值是字符串,可以随意写。
⽤于在共享内存中定义⼀块存储区域来存放缓存的 key 和 metadata(类似于使⽤次数),这样 nginx 可以快速判断⼀个 request 是否命中缓存。
1m 可以存储 8000 个key4. max_size:最⼤ cache 空间。
如果不指定,会使⽤掉所有 disk space。
当达到 disk 上限后,会删除最少使⽤的 cache5. inactive:内存中缓存的过期检查周期。
⽰例配置中如果 2h 内都没有被访问,则不论状态是否为 expired,都会清除缓存。
使用Nginx作缓存服务器以及删除其缓存文件的方法
使⽤Nginx作缓存服务器以及删除其缓存⽂件的⽅法使⽤nginx做cache服务器需求就是缓存android的软件包,后缀名是apk。
话不多说,直接上配置,供参考:a-->nginx.confuser www www;worker_processes 8;error_log /data/logs/nginx_error.log crit;pid /usr/local/nginx/nginx.pid;worker_rlimit_nofile 204800;events{use epoll;worker_connections 204800;}http{include mime.types;#apk ⽂件类型#default_type application/vnd.android.package-archive;default_type application/octet-stream;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;client_body_buffer_size 512k;#跟后端服务器连接的超时时间_发起握⼿等候响应超时时间proxy_connect_timeout 600;#连接成功后_等候后端服务器响应的时间_其实已经进⼊后端的排队之中等候处理proxy_read_timeout 600;#后端服务器数据回传时间_就是在规定时间内后端服务器必须传完所有数据proxy_send_timeout 600;#代理请求缓存区_这个缓存区间会保存⽤户的头信息以供Nginx进⾏规则处理_⼀般只要能保存下头信息即可proxy_buffer_size 16k;#同上告诉Nginx保存单个⽤的⼏个Buffer最⼤⽤多⼤空间proxy_buffers 4 64k;#如果系统很忙的时候可以申请更⼤的proxy_buffers 官⽅推荐*2proxy_busy_buffers_size 128k;#proxy缓存临时⽂件的⼤⼩proxy_temp_file_write_size 128k;gzip on;gzip_proxied expired no-cache no-store private auth;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 3;gzip_types text/plain application/x-javascript text/css application/xml;gzip_disable "MSIE [1-6]\.";gzip_vary on;#log_format access '$remote_addr - $remote_user [$time_local] '# '"$request" $status $body_bytes_sent '# '"$http_referer" "$http_user_agent" '# '$host $request_time $http_x_forwarded_for';#access_log /data/logs/http.a.log;#error_log /data/logs/http.e.log;include vhosts/.conf;}upstream source_site {server 192.168.1.1:80 weight=7 max_fails=2 fail_timeout=30s;server 192.168.1.2:80 weight=4 max_fails=2 fail_timeout=30s;}b-->.conf#⽤于指定本地⽬录来缓冲较⼤的代理请求proxy_temp_path /data/soft/temp;#设置web缓存区名为cache_one,内存缓存空间⼤⼩为12000M,⾃动清除超过15天没有被访问过的缓存数据,硬盘缓存空间⼤⼩200gproxy_cache_path /data/soft/cache levels=1:2 keys_zone=cache_one:12000m inactive=15d max_size=200g;server {listen 80;server_name ;access_log /data/logs/a.log;error_log /data/logs/e.log notice;# PHP Scripts is NOT allowed within this site!location ~* \.(php|php5|jsp|asp|aspx)$ {deny all;}location / {proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;proxy_cache cache_one;proxy_cache_valid 200 304 12h;proxy_cache_key $uri$is_args$args;#反向代理,访问后端内容源服务器proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http://source_site;}location ~* .*\.(apk)$ {error_page 302 404 = @fallback;#如果后端的服务器返回500、502、503、504执⾏超时等错误、⾃动将请求转发到upstream负载均衡池中的另⼀台服务器,实现故障转移proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;#使⽤web缓存区cache_oneproxy_cache cache_one;#对不同的HTTP状态码缓存设置不同的缓存时间proxy_cache_valid 200 304 12h;#设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这⾥根据"域名、URI、参数"组合成keyproxy_cache_key $uri$is_args$args;#反向代理,访问后端内容源服务器proxy_set_header Host $host;proxy_set_header X-Forwarded-For $remote_addr;proxy_pass http://source_site;expires 1d;}location @fallback {rewrite ^ $scheme://$uri redirect;expires -1;}}说明:其实按这个配置location /这个匹配是多余的,因为过来⼀个后缀名为apk的软件包location ~* .*\.(apk)$已经给匹配上了,不会再到location /了,不过由于我们还会缓存些其他后缀名的⽂件,所以location /就是必须的。
openwrt nginx 参数
openwrt nginx 参数OpenWrt是一款基于Linux内核的嵌入式操作系统,广泛应用于路由器、智能家居等设备中。
Nginx则是一款高性能的Web服务器和反向代理服务器,具有高性能、稳定、安全等特点。
在OpenWrt系统中,Nginx被广泛应用于Web服务、负载均衡、缓存等功能。
本文将介绍如何在OpenWrt中安装和配置Nginx,以及Nginx的一些常用参数和实战应用案例。
一、OpenWrt简介OpenWrt是一个基于Linux内核的嵌入式操作系统,为网络设备提供了一个完整、可扩展的网络平台。
OpenWrt具有高度可定制性,用户可以根据需求安装各种软件包,如Web服务器、FTP服务器、数据库等。
此外,OpenWrt还具有丰富的安全功能,如防火墙、VPN等,保障网络安全。
二、Nginx简介ginx是一款高性能的Web服务器和反向代理服务器,由俄罗斯程序员Igor Sysoev开发。
Nginx具有高性能、稳定性、安全性等特点,广泛应用于各种Web服务器场景。
Nginx支持多种协议,如HTTP、HTTPS、FTP等,并具有负载均衡、缓存、动静分离等功能。
三、OpenWrt中Nginx的安装与配置在OpenWrt系统中安装Nginx,可以通过OpenWrt的包管理器进行。
以下是在OpenWrt中安装Nginx的步骤:1.登录OpenWrt系统,进入包管理器界面。
2.搜索Nginx相关软件包,如“nghttp2”。
3.安装Nginx依赖库,如“nghttp2-devel”。
4.安装Nginx主程序,如“nghttp2”。
5.配置Nginx,修改配置文件,设置监听端口、虚拟主机等信息。
6.重启Nginx服务,使配置生效。
四、Nginx常用参数介绍ginx配置文件中包含了许多常用的参数,以下介绍一些常用的参数:1.server:定义服务器地址和端口。
2.location:定义URL映射,如静态资源映射、动态页面映射等。
nginx针对特定接口缓存数据的方法
nginx针对特定接口缓存数据的方法一、背景Nginx是一款常用的Web服务器软件,它具有高性能、高并发、易配置等优点。
在处理大量请求的情况下,缓存数据可以提高服务器的响应速度和性能。
针对特定接口缓存数据,可以减少对该接口的请求次数,提高整体性能。
二、方法1.配置Nginx缓存规则在Nginx配置文件中,可以使用if语句来匹配特定接口的请求,并设置相应的缓存规则。
例如:```location/api/v1/user/login{if($request_uri~*^/api/v1/user/login.*$){proxy_cachecache_name;proxy_cache_key$scheme$request_uri;proxy_cache_valid20030412h;proxy_passhttp://backend_server;}}```上述配置中,我们匹配了"/api/v1/user/login"路径的请求,并将其缓存规则设置为:缓存有效期为12小时,当返回状态码为200或304时,使用缓存数据。
2.更新缓存数据当接口数据发生变化时,需要手动更新缓存数据。
可以使用Nginx的http模块,将更新后的数据写入到缓存文件中。
例如:```bashlocation/api/v1/user/info{proxy_cachecache_name;proxy_cache_valid20012h;add_headerCache-Control"public,max-age=3600";set$cache_key$scheme$host$request_uri;root/path/to/cache;proxy_passhttp://backend_server;location~*^/api/v1/user/info.*${update_cache;break;}}```上述配置中,我们使用update_cache指令来手动更新缓存数据。
使用Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置方法
使⽤Nginx反向代理与proxy_cache缓存搭建CDN服务器的配置⽅法移动⽤户访问web服务器很慢1、在移动机房放置⼀台nginx反向代理服务器2、通过域名DNS智能解析,所有移动⽤户访问时解析到nginx反向代理服务器3、nginx反向代理服务器与web服务器之间采⽤专线连接1、web服务器线路:电信IP:192.168.21.129域名:2、nginx反向代理服务器线路:移动系统:CentOS 6.2IP:192.168.21.164vi /etc/hosts #编辑,在⽂件最后添加下⾯⼀⾏192.168.21.129 3、客户端线路:移动系统:Windows 7IP:192.168.21.130C:\Windows\System32\drivers\etc\hosts #⽤记事本打开,在⽂件最后添加下⾯⼀⾏192.168.21.164 status)status $progRETVAL=$?*)echo $"Usage: $prog {start|stop|restart|reload|status|help}"exit 1esacexit $RETVAL=======================================================:wq!保存退出chmod 775 /etc/rc.d/init.d/nginx #赋予⽂件执⾏权限chkconfig nginx on #设置开机启动/etc/rc.d/init.d/nginx restartservice nginx restartcp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.confbak #备份nginx配置⽂件(⼀)、设置nginx运⾏账号vi /usr/local/nginx/conf/nginx.conf #编辑找到user nobody;修改为user www www; #在第⼀⾏(⼆)、禁⽌nginx空主机头vi /usr/local/nginx/conf/nginx.conf #编辑找到server,在上⾯⼀⾏添加如下内容:##############################server {listen 80 default;server_name _;location / {root html;return 404;}location ~ /.ht {deny all;}}##############################/etc/rc.d/init.d/nginx restart #重启nginx这样设置之后,空主机头访问会直接跳转到nginx404错误页⾯。
nginx缓存配置
nginx缓存配置nginx缓存设置post by rocdk890 / 2011-7-23 13:34 Saturday linux技术发表评论目的:缓存nginx服务器的静态文件。
如css,js,htm,html,jpg,gif,png,flv,swf,这些文件都不是经常更新。
便于缓存以减轻服务器的压力。
实现:nginx proxy_cache可以将用户的请缓存到本地一个目录,当下一个请求时可以直接调取缓存文件,就不用去后端服务器去取文件了。
配置:打开配置文件/etc/nginx/nginx.confuser www www;worker_processes 2;error_log /var/log/nginx/nginx_error.log crit;worker_rlimit_nofile 65535;events{use epoll;worker_connections 65535;}http{include mime.types;default_type application/octet-stream;server_names_hash_bucket_size 128;client_header_buffer_size 32k;large_client_header_buffers 4 32k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 0;tcp_nodelay on;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 64k;fastcgi_buffers 4 64k;fastcgi_busy_buffers_size 128k;fastcgi_temp_file_write_size 128k;##cache##proxy_connect_timeout 5;proxy_read_timeout 60;proxy_send_timeout 5;proxy_buffer_size 16k;proxy_buffers 4 64k;proxy_busy_buffers_size 128k;proxy_temp_file_write_size 128k;proxy_temp_path /home/temp_dir;proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; ##end##gzip on;gzip_min_length 1k;gzip_buffers 4 8k;gzip_http_version 1.1;gzip_types text/plain application/x-javascript text/css application/xml;gzip_disable "MSIE [1-6]\.";log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';upstream appserver {server 192.168.1.251;}server {listen 80 default;server_name ;location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {proxy_pass http://appserver ;proxy_redirect off;proxy_set_header Host $host;proxy_cache cache_one;proxy_cache_valid 200 302 1h;proxy_cache_valid 301 1d;proxy_cache_valid any 1m;expires 30d;}location ~ .*\.(php)(.*){proxy_pass http://appserver ;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}access_log /var/log/nginx/.log;}}红色部分是配置缓存的参数。
Nginx反向代理并缓存及缓存清除的方法
Nginx反向代理并缓存及缓存清除的⽅法本⽂介绍了Nginx 反向代理并缓存及缓存清除的⽅法,分享给⼤家,具体如下:⼀. Nginx 配置#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;}http {log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"''$upstream_addr $upstream_status $request_time $upstream_response_time';access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log;server_tokens off;include mime.types;default_type application/octet-stream;sendfile on;tcp_nopush on;client_max_body_size 10m;client_body_buffer_size 128k;proxy_connect_timeout 300;proxy_send_timeout 300;proxy_read_timeout 300;proxy_buffer_size 64k;proxy_buffers 4 512k;proxy_busy_buffers_size 512k;proxy_temp_file_write_size 512k;proxy_temp_path /data/nginx/proxy_temp;proxy_cache_path /data/nginx/proxy_cache levels=1:2 keys_zone=cache_one:2000m inactive=3d max_size=500g;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;gzip on;gzip_min_length 1k;gzip_buffers 4 16k;gzip_http_version 1.1;gzip_comp_level 2;gzip_types text/plain application/x-javascript text/css application/xml;gzip_vary on;upstream go {server :80 weight=4;#server 42.121.252.58:80 weight=4;}server {listen 192.168.55.133:80;#server_name ;access_log /var/log/nginx/go.access.log main;error_log /var/log/nginx/go.error.log error;location / {proxy_cache cache_one;#proxy_cache_valid 200 304 301 302 2h;#proxy_cache_valid any 2h;#expires 1d;add_header X-Cache $upstream_cache_status; proxy_pass http://go;proxy_cache_key $uri$is_args$args;}location ~ /purge(/.*) {allow 127.0.0.1;allow 192.168.55.0/24;deny all;proxy_cache_purge cache_one $1$is_args$args; }}}⼆. 测试1.⾸次访问2.刷新⼀次,也就是第⼆次访问3.缓存清理以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
nginxcache不缓存问题的原因与解决方案
nginxcache不缓存问题的原因与解决⽅案nginx.conf 部分内容:proxy_temp_path /nginx/cache/temp;proxy_cache_path /nginx/cache/path levels=1:2 keys_zone=cache_test:2048m inactive=7d max_size=10g;......location ~ .(gif|jpg|jgep|png)$ {proxy_pass http://upstreams;proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;proxy_cache cache_test;#设置缓存的keyproxy_cache_key $host$uri$is_args$args;#设置状态码为200和304的响应可以进⾏缓存,并且缓存时间为1天proxy_cache_valid 200 304 1d;expires 30d;}nginx不缓存原因默认情况下,nginx是否缓存是由nginx缓存服务器与源服务器共同决定的, 缓存服务器需要严格遵守源服务器响应的header来决定是否缓存以及缓存的时常。
header主要有如下:Cache-control:no-cache、no-store如果出现这两值,nginx缓存服务器是绝对不会缓存的Expires:1980-01-01如果出现⽇期⽐当前时间早,也不会缓存。
解决不缓存⽅案2.1 ⽅法⼀:修改程序或者源服务器web程序响应的header2.2 ⽅法⼆:nginx代理直接加上如下⼀句:proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。
nginx 规则
nginx 规则Nginx是一款由俄罗斯程序员IgorSysoev开发的开源Web服务器,它的设计十分高效,特别适用于多处理器、多核处理器系统,能够提供卓越的性能、稳定性和可靠性。
本文将讨论Nginx的规则,以及它们如何来提升Nginx服务器的性能与可用性。
Nginx的规则Nginx的规则主要涉及到缓存控制、负载均衡、代理、URL重写、SSL等等。
下面我们将对每个规则分别进行介绍:1.存控制:Nginx可以使用缓存控制功能来提高服务器的性能。
缓存控制可以控制客户端在访问同一个URL时,使用缓存,而不是重新生成页面。
Nginx可以使用“Last-Modified”、“Etag”和“Expires”头信息来控制缓存。
2.载均衡:Nginx支持负载均衡,可以通过负载均衡来提高服务器的可用性。
Nginx可以根据预先设定的权重来选择不同的服务器来处理某一请求。
3. 代理:Nginx也可以作为反向代理服务器,它可以将客户端的请求转发到其他服务器上,可以把客户端的请求分发到多台后端服务器上。
4. URL重写:URL重写是Nginx中非常重要的一个功能,通过URL重写,Nginx可以对客户端的请求做出判断,并对其进行重定向或者拒绝访问。
5. SSL:Nginx也支持SSL加密功能,支持HTTPS/2、TLS和SSLv2/3协议,可以满足企业的安全要求。
Nginx的规则如何提升性能与可用性通过使用Nginx的规则,可以有效提升Nginx服务器的性能与可用性,它们可以帮助我们:1.存控制可以提高服务器的访问速度,从而提高服务器的性能。
2.载均衡可以让请求分散到多个服务器上,提高服务器的可用性。
3. 使用反向代理,可以使后端服务器不受直接来自客户端的访问,从而提高服务器的安全性。
4. URL重写可以更好地控制访问路径,提高服务器的安全性。
5. SSL加密可以提高传输数据的安全性,同时可以为客户端屏蔽具体的服务端地址,提高服务器的安全性。
nginx兜底规则
nginx兜底规则nginx兜底规则是一种常用的服务器配置方案,用于在后端服务不可用或异常时,提供一个备用的响应或页面给用户。
通过设置nginx兜底规则,可以保证服务的稳定性和用户体验。
兜底规则通常包括以下几个方面:1. 502错误页面:当后端服务不可用时,nginx可以配置一个502错误页面,向用户显示一个友好的错误提示,告知用户当前服务不可用,同时提供一些帮助或联系方式。
2. 503错误页面:当服务器负载过高或正在进行维护时,nginx可以配置一个503错误页面,向用户显示一个暂时不可用的提示页面,告知用户稍后再试,同时提供一些其他相关信息。
3. 静态资源缓存:为了提高网站的性能和访问速度,nginx可以配置静态资源缓存,将一些常用的静态资源如图片、CSS、JS文件等缓存到本地,当后端服务不可用时,仍可以通过缓存的静态资源提供部分页面内容给用户,降低对后端服务的依赖。
4. 定时健康检查:nginx允许配置定时健康检查,通过定期检测后端服务的可用性来判断是否启用兜底规则。
当后端服务异常时,nginx会根据设置的兜底规则来决定如何响应用户请求。
5. 容错处理:在配置兜底规则时,nginx允许设置容错处理策略,即在出现异常情况时如何处理请求。
可以选择直接返回错误页面、转发请求到其他备用服务器或重试请求等策略,以提供更好的用户体验。
总而言之,nginx兜底规则是一种保障网站稳定性和用户体验的重要配置方式。
通过合理设置502、503错误页面、静态资源缓存、定时健康检查和容错处理等规则,可以在后端服务异常时仍然向用户提供良好的响应。
这对于提升网站可用性、降低故障风险具有重要意义。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_redirect off;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_cache_valid 200 302 1h;
请求动态文件设置。
proxy_pass http://appserver ;不进行缓存,直接转到后端服务器。
测试: 当客户端发起http请求时在服务器上会产一个缓存文件如
/home/cache/0/b9/8bd841b1c44ee5b91457eb561e44eb90
OK
#不允许客户端主动关闭连接,如果该项为设置在nginx的日志中可能出现499 错误
default_type application/octet-stream;
log_format main ‘$remote_addr – $remote_user [$time_local] ‘
user nobody;
worker_processes 1;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
'"$http_user_agent" $http_x_forwarded_for';
upstream appserver {
server 192.168.1.251;
}
server {
listen 80 default;
proxy_temp_path /home/temp_dir;
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
##end##
gzip on;
nginx缓存设置
post by rocdk890 / 2011-7-23 13:34 Saturday linux技术 发表评论
目的: 缓存nginx服务器的静态文件。如css,js,htm,html,jpg,gif,png,flv,swf,这些文件都不是经常更新。便于缓存以减轻服务器的压力。
实现: nginx proxy_cache可以将用户的请缓存到本地一个目录,当下一个请求时可以直接调取缓存文件,就不用去后端服务器去取文件了。
配置: 打开配置文件/etc/nginx/nginx.conf
user www www;
worker_processes 2;
error_log /var/log/nginx/nginx_error.log crit;
#后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据
proxy_send_timeout 5;
#代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可
proxy_buffer_size 32k;
#告诉nginx保存单个用的几个buffer 最大用多少空间
需要第三方的ngx_cache_purge模块:
wget /files/ngx_cache_purge-1.0.tar.gz
tar zxvf ngx_cache_purge-1.0.tar.gz
nginx机器IP地址:192.168.2.187
编译参数: configure arguments: –add-module=../ngx_cache_purge-1.0 –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module
}
红色部分是配置缓存的参数。
说明:
1、http段设置。
proxy_temp_path /home/temp_dir;设置临时目录
proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;设置缓存目录为二级目录,共享内存区大小,非活动时间,最大容量,注意临时目录要跟缓存目录在同一个分区。
tcp_nopush on;
keepalive_timeout 0;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
proxy_buffers 4 64k;
#高负载下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;,
#设置缓存文件夹大小,如果大于该值,将从uபைடு நூலகம்stream 服务器传递请求,而不缓冲到磁盘上
proxy_temp_file_write_size 1024m;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /var/log/nginx/.log;
}
proxy_ignore_client_abort on;
#nginx 和后端服务器连接超时时间 发起握手等候响应时间
proxy_connect_timeout 5;
#连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理
proxy_read_timeout 60;
# 该处设置的是缓存的目录及其设置的大小
proxy_cache_path /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
location 下
#进行缓存,使用web缓存去cache_one
proxy_ignore_headers "Cache-Control" "Expires";
nginx反向代理做cache缓存配置
前序:请耐性子看完,前面的这个配置可以达到按后缀名进行缓存,但无法被purge。后面的配置可以被purge。
具体实施方案按个人情况而定。
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
proxy_cache cache_one;
#以域名,URI,参数组合成web缓存的Key值,Nginx根据Key值哈希,储存缓存内容到二级缓存目录内
#对不同的HTTP 状态码设置不同的缓存时间
proxy_cache_valid 200 304 12h;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
##cache##
proxy_connect_timeout 5;
proxy_cache_valid any 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
#设定proxy_set_header Accept-Encoding 或者是后台服务器关闭gzip,该台机器才不会缓存被压缩的文件,造成乱码
proxy_pass http://appserver ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
server_name ;
location ~ .*\.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) {
proxy_pass http://appserver ;
proxy_set_header Accept-Encoding "none";
# proxy_set_header Accept-Encoding ""; 同上面一项相同
#设置proxy_cache 支持后台设定的expires , 即使支持HTTP头信息定义的缓存规则
gzip_disable "MSIE [1-6]\.";
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '