博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决nginx反向代理缓存不起作用的问题
阅读量:6848 次
发布时间:2019-06-26

本文共 1759 字,大约阅读时间需要 5 分钟。

昨天尝试用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: privateSet-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;    }}

【参考资料】

【相关链接】

转载于:https://www.cnblogs.com/dudu/p/4597351.html

你可能感兴趣的文章
iOS10以后相机、相册等授权问题
查看>>
转:iptables防火墙原理详解
查看>>
MySLQ排序后标记排行
查看>>
RAID
查看>>
【高德地图API】从零开始学高德JS API(六)——坐标转换
查看>>
最全的Markdown语法
查看>>
正则表达式
查看>>
Angular企业级开发(1)-AngularJS简介
查看>>
如何查看自己电脑系统的安装日期-Window上
查看>>
继承Runnable 实现Synchronized 同步锁
查看>>
好书推荐
查看>>
tomcat 连接数设置(转)
查看>>
linux下定时执行任务的方法
查看>>
Activity 之生命周期
查看>>
Windows压缩包安装MySQL
查看>>
datatable编辑一行数据的方法
查看>>
移动端web开发初探之Vuejs的简单实战
查看>>
Team Project Proposal for ASE Course---query suggestion by 3D tag cloud
查看>>
IDEA2016.3搭建Struts2+Hibernate+Spring项目环境
查看>>
多线程(一)线程创建的三种方式
查看>>