解决nginx反向代理缓存不起作用的问题
昨天尝试用nginx搭建nuget镜像服务器,镜像服务器需要两个功能:1)反向代理;2)内容缓存。
用nginx做反向代理,配置非常简单,只需在/etc/nginx/nginx.conf中添加一个包含proxy_pass的server设置:
server {
listen 80;
listen [::]:80;
server_name 镜像服务器主机名;
location / {
proxy_pass http://www.nuget.org;
}
}
而添加缓存功能,配置稍微复杂些。
首先要创建一个用于存放缓存文件的文件夹,比如这里用 /data/nuget-cache 。
mkdir /data/nuget-cache
然后在nginx.conf的http设置部分添加proxy_cache_path设置:
proxy_cache_path /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=50g inactive=168h;
* keys_zone指的是缓存空间名称。
* max_size指的是缓存文件可以占用的最大空间。
* inactive指的是如果一个缓存文件多长时间不被访问,就会被删除。
接着在server设置部分添加proxy_cache与proxy_cache_valid设置:
server {
listen 80;
listen [::]:80;
server_name 镜像服务器主机名;
location / {
proxy_pass http://www.nuget.org;
proxy_cache nuget-cache;
proxy_cache_valid 168h;
}
}
* proxy_cache设置的就是proxy_cache_path中keys_zone的值。
* proxy_cache_valid设置的是缓存过期时间,比如这里168小时过期。
这样设置后运行nginx,发现只有少部分内容被缓存,大部分内容不能被缓存,比如下面的URL的响应内容就不能被缓存:
http://www.myget.org/F/aspnetvnext/api/v2/FindPackagesById%28%29?id=%27System.Linq%27
查看http响应头(http headers),发现了下面2个http header:
Cache-Control: private
Set-Cookie: ai_session=ad829b6c509946098fa7f8e32fada661|2015-06-24T03:52:38.2032109+00:00|2015-06-24T03:52:38.4219541
+00:00; expires=Wed, 24-Jun-2015 04:22:38 GMT; path=/
问题就是它们引起的,需要在nginx中通过proxy_ignore_headers设置忽略它们,设置方法如下:
server {
listen 80;
listen [::]:80;
server_name 镜像服务器主机名;
location / {
proxy_pass http://www.nuget.org;
proxy_cache nuget-cache;
proxy_cache_valid 168h;
proxy_ignore_headers Set-Cookie Cache-Control;
proxy_hide_header Cache-Control;
proxy_hide_header Set-Cookie;
}
}
【参考资料】
Understanding the nginx proxy_cache_path directive
【相关链接】
解决nginx反向代理缓存不起作用的问题的更多相关文章
- nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录
在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...
- nginx反向代理缓存服务器的构建
一:代理服务可简单的分为正向代理和反向代理: 正向代理:用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请求先发送 ...
- 解决nginx反向代理webservice的soap:address location问题
原文:https://blog.csdn.net/mn960mn/article/details/50716768 一:首先来发布一个web service package com.ws.servic ...
- nginx反向代理缓存配置
关于nginx的反向代理缓存配置,用的最多的就是CDN公司,目前CDN公司用纯nginx做缓存的已经很少了,基本都用tnginx(阿里的).openresty:但是这两款软件都是基于nignx开发的, ...
- 解决Nginx反向代理不会自动对特殊字符进行编码的问题 如gitblit中的~波浪线
问题起因是利用Nginx做反向代理的时候,需要访问如下链接http://192.168.14.141/iserver/services/3D-0524hd/rest/realspace/datas/0 ...
- 解决nginx反向代理Mixed Content和Blockable问题
nginx配置https反向代理,按F12发现js等文件出现Mixed Content,Optionally-blockable 和 Blockable HTTPS 网页中加载的 HTTP 资源被称之 ...
- nginx反向代理的配置优化
作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- Nginx反向代理、负载均衡、页面缓存、URL重写及读写分离详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统 ...
随机推荐
- python之fabric(二):执行模式(转)
执行模式 执行模式可以让你在多个主机上执行多个任务. 执行策略: 默认fabric是单个有序地执行方法,其行为如下: 1. 创建一系列任务,通过fab任务执行要执行的任务: 2. 根据主机列表定义,去 ...
- 8.10 CSS知识点3
7.属性选择符 选择符 版本 描述 E[att] CSS2 选择具有att属性的E元素 E[att="val"] CSS2 选择具有att属性值等于val的E元素 E[att~=& ...
- Jqurey DOM 操作详解
一.获取 1.获取内容----.text() .html() .value() text() - 设置或返回所选元素的文本内容 格式:$(选择器) ...
- 循序渐进Python3(三) -- 0 -- 初识函数
函数 如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式S=3.14*r*r算出它的面积,如果我们要算100个圆的面积,则每次我们都需要写公式去计算,是不是很麻烦,但是有了函数的话,我们就不 ...
- Echarts tooltip文字没有左对齐
tooltip : { trigger: 'axis', axisPointer : { // 坐标轴指示器,坐标轴触发有效 type : 'shadow' // 默认为直线,可选为:'line' | ...
- dba管理
ORACLE 锁表的解决方法及查找引起锁表SQL语句方法 1. ORACLE中查看当前系统中锁表情况 select * from v$locked_object 可以通过查询v$locked_obj ...
- Spring MVC开发环境的搭建和实例
一.安装jdk 二.安装tomcat 三.安装maven 新增环境变量MAVEN-HOME,并在path变量中添加bin路径 四.安装IntelliJ IDEA 五.创建maven web项目选择jd ...
- Selenium2+python自动化6-八种元素元素定位(Firebug和firepath)
前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位. 元素定位在这四个环节中是至 ...
- Rsync+inotify实现实时同步
1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...
- Daily Scrum 12.10
今日完成任务: 终于修复了大部分的异常,感觉顿时松了一口气.重新在服务器上部署了webservice接口服务以及学霸网站.资源的上传下载功能正在逐渐完善. 遇到困难: 在本地运行正常,部署到服务器上运 ...