全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 32376|回复: 15

Nginx反代缓存设置

[复制链接]
发表于 2017-4-14 12:42:16 | 显示全部楼层 |阅读模式
50金钱
本帖最后由 gaoji.me 于 2017-4-14 18:59 编辑

求配置:
反向代理已经设置:
http://www.hostloc.com/thread-361113-1-1.html

配置就是解决的配置


想在其中加个缓存设置。

解决代码

nginx.conf
在http{
后面添加:

  1. proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=1024m;
  2.             proxy_cache_key "$host$request_uri $cookie_user";
复制代码

}

  1. server    {
  2.         listen          80;
  3.         server_name     t.abc.com;
  4.         location / {
  5.                 proxy_set_header Accept-Encoding "";
  6.                 proxy_cache cache;#设置缓存共享内存区块,也就是keys_zone名称。
  7.                 proxy_cache_valid 200 302 1h;#设置http状态码为200,302缓存时间为1小时。
  8.                 expires 30d;#设置失期时间,为30天
  9.                 proxy_pass             http://abc.com/;
  10.                 proxy_redirect          off;
  11.                 proxy_set_header        X-Real-IP       $remote_addr;
  12.                 proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  13.                 sub_filter  'abc' 't.abc';
  14.                 sub_filter_types *;
  15.                 sub_filter_once off;

  16.         }
  17.     }
复制代码

最佳答案

查看完整内容

先找到nginx的配置文件,nginx.conf,看里面http段有没有 #后面可能不一样,如果有直接在server段添加 红色部分要一样
发表于 2017-4-14 12:42:17 | 显示全部楼层
gaoji.me 发表于 2017-4-14 13:37
是不是要加些模块  目前的Nginx的模块 如下

先找到nginx的配置文件,nginx.conf,看里面http段有没有   
  1. proxy_cache_path /var/cache/nginx levels=2 keys_zone=[color=Red]cache[/color]:10m inactive=60m max_size=1024m;
  2.     proxy_cache_key "$host$request_uri $cookie_user";
复制代码
#后面可能不一样,如果有直接在server段添加
  1. proxy_cache [color=Red]cache[/color];#设置缓存共享内存区块,也就是keys_zone名称。
  2. proxy_cache_valid 200 302 1h;#设置http状态码为200,302缓存时间为1小时。
  3. expires 30d;#设置失期时间,为30天
复制代码


红色部分要一样

点评

ok  发表于 2017-4-14 18:54
发表于 2017-4-14 12:45:46 | 显示全部楼层
删除某个网页的缓存很麻烦
发表于 2017-4-14 13:10:35 | 显示全部楼层
本帖最后由 大华影院 于 2017-4-14 13:57 编辑

感觉应该是这样子的。。。。


http里

proxy_cache_path /usr/share/nginx/cache/ levels=1:2  keys_zone=tmpcache:10m inactive=1d max_size=10g; # 设置缓存文件路径 你可以设成其他存在的路径  当前是放你nginx的cache文件夹  可以自己建

server里

location  ~  .*\.(gif|jpg|jpeg|png|bmp|swf|css|js)$ {//不同类型文件本地缓存
                 proxy_cache tmpcache;
                 proxy_cache_valid 300 304 12h;#不同HTTP状态码缓存存不同时间
                 proxy_cache_valid 301 302 1m;
                 proxy_cache_valid any 1m;
                 proxy_cache_key $host$uri$is_args$args;#设置web缓存key值
                 proxy_set_header Accept-Encoding "";
                proxy_pass             http://abc.com/;
                proxy_redirect          off;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                sub_filter  'abc' 't.abc';
                sub_filter_types *;
                sub_filter_once off;

           }
location  ~  /purge(/.*){#清除url缓存  要ngx_cache_purge  模块支持
                 allow 127.0.0.1;
                 allow  192.168.0.0/16;
                 deny all;
                 proxy_cache_purge cache_one;
           }
location  ~  .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #各种类型过期时间
                 expires 30d;
           }
location  ~  .*\.(js|css)?$ {
                 expires 1h;
           }
 楼主| 发表于 2017-4-14 13:18:30 | 显示全部楼层
本帖最后由 gaoji.me 于 2017-4-14 13:21 编辑
大华影院 发表于 2017-4-14 13:10
感觉应该是这样子的。。。。


service nginx restart
* Restarting nginx nginx                                                [fail]


=====
proxy_cache_key $host$uri$is_args$args;#设置web缓存key值
这个配置存在就fail
发表于 2017-4-14 13:34:08 | 显示全部楼层
试试
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
或者
proxy_cache_key $scheme$proxy_host$request_uri;
 楼主| 发表于 2017-4-14 13:37:04 | 显示全部楼层
大华影院 发表于 2017-4-14 13:34
试试
proxy_cache_key $scheme$proxy_host$uri$is_args$args;
或者

是不是要加些模块  目前的Nginx的模块 如下

  1. nginx -V
  2. nginx version: nginx/1.4.6 (Ubuntu)
  3. built by gcc 4.8.2 (Ubuntu 4.8.2-16ubuntu6)
  4. TLS SNI support enabled
  5. configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module
复制代码
发表于 2017-4-14 13:53:08 | 显示全部楼层
本帖最后由 今晚我是你的 于 2017-4-14 14:04 编辑

如果你的cache里面有数据了,就缓存成功了
缓存的教程百度里面有不少的,多试试就好
主要是改nginx.conf和你的站点虚拟主机conf

下面2行加在nginx.conf
在nginx.conf的http区域添加下面代码,比如gzip on;的上一行

proxy_temp_path /usr/local/nginx/proxy_temp;
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;  


下面那行你就加原来下一行
proxy_set_header Accept-Encoding "";
proxy_cache content;

红色字体目录要存在

蓝色字体要一样
发表于 2017-4-14 13:55:45 | 显示全部楼层
本帖最后由 大华影院 于 2017-4-14 13:58 编辑
gaoji.me 发表于 2017-4-14 13:37
是不是要加些模块  目前的Nginx的模块 如下


理论上是不需要额外模块的 除非你要purge缓存

我之前有个错误   keys_zone命名上下不一致
 楼主| 发表于 2017-4-14 14:01:33 | 显示全部楼层
今晚我是你的 发表于 2017-4-14 13:53
没看明白,如果你的cache里面有数据了,就缓存成功了
1.proxy_cache缓存
2.FASTCGI的缓存配置



没有 求大佬在昨天的配置中加点料

只要能用就行了  上面大佬的设置 nginx restart启动不了 根本没有cache

点评

7楼重新编辑了。  发表于 2017-4-14 14:03
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-25 14:46 , Processed in 0.071715 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表