点赞
评论
收藏
分享
举报
Nginx使用教程(七):使用Nginx缓存之proxy cache
发表于2021-02-08 10:20

浏览 4.5k

定义缓存目录

<br\>
使用您喜欢的文本编辑器打开/etc/nginx/nginx.conf,并在http {区域加入:

  1. proxy_cache_path  /var/www/cache levels=1:2 keys_zone=my-cache:8m max_size=1000m inactive=600m;
  2. proxy_temp_path /var/www/cache/tmp;
  3. real_ip_header X-Forwarded-For;

前2行创建一个缓存目录。 真正的X-Forwarded-For头指示Nginx将原始IP地址转发到后端(端口8080),否则所有流量似乎都来自127.0.0.1。

应用缓存

<br\>
接下来,我们需要在/etc/nginx/sites-available/website下创建虚拟主机

  1. server {
  2.         listen 80;
  3.         server_name _;
  4.         server_tokens off;
  5.         location / {
  6.                 proxy_pass              http://127.0.0.1:8080/;
  7.                 proxy_set_header        Host                    $host;
  8.                 proxy_set_header        X-Real-IP               $remote_addr;
  9.                 proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
  10.                 proxy_cache  my-cache;
  11.                 proxy_cache_valid 3s;
  12.                 proxy_no_cache $cookie_PHPSESSID;
  13.                 proxy_cache_bypass $cookie_PHPSESSID;
  14.                 proxy_cache_key         "schemehost$request_uri";
  15.                 add_header X-Cache $upstream_cache_status;
  16.         }
  17. }
  18. server {
  19.         listen   8080;
  20.         server_name _;
  21.         root /var/www/your_document_root/;
  22.         index index.php index.html index.htm;
  23.         server_tokens off;
  24.         location ~ \.php$ {
  25.                 try_files $uri /index.php;
  26.                 fastcgi_pass 127.0.0.1:9000;
  27.                 fastcgi_index index.php;
  28.                 fastcgi_param SCRIPT_FILENAME documentrootfastcgi_script_name;
  29.                 include /etc/nginx/fastcgi_params;
  30.         }
  31.         location ~ /\.ht {
  32.                 deny all;
  33.         }
  34. }

然后通过执行以下操作启用它:

  1. cd
  2. ln -s /etc/nginx/sites-available/website /etc/nginx/sites-enabled/website
  3. /etc/init.d/nginx restart

第一个服务器定义是在端口80上运行的反向缓存代理。
第二个服务器定义用于后端(典型的nginx配置,端口8080,而不是80)。

proxy相关指令介绍

<br\>
proxy_pass http://127.0.0.1:8080/将流量转发到端口8080,Nginx后端位于该端口
proxy_cache my-cache定义要使用的高速缓存,这里是my-cache,我们之前在nginx.conf中添加的
proxy_cache_valid 3s将缓存时间设置为3秒。 在确定缓存到期之前的秒数(清除缓存)。 此数字可以根据您网站上的内容的新鲜度而增加或减少。
proxy_no_cache cookiePHPSESSID禁止反向缓存代理缓存具有PHPSESSIDCookie的请求。否则,您的登录用户页面将被缓存并显示给其他人。如果您使用的Cookie框架使用Cookie的默认PHPSESSID以外的Cookie名称,请务必替换。proxycachebypass cookie_PHPSESSID指示代理绕过缓存,并且如果传入请求包含PHPSESSID Cookie,则将请求转发到后端。 否则,你最终会显示登录的用户,登出的版本(从缓存提供)。
proxy_cache_key “schemehostrequesturi”定义用于缓存的键。以下使用 request_uri,它适合于根据url存储不同版本的页面(不同的GET参数,不同的内容)。
add_header X-Cache $ upstream_cache_status可用于调试,返回HIT,BYPASS或EXPIRED,具体取决于请求是从高速缓存(HIT)提供还是从后端(MISS)提供.EXPIRED表示在高速缓存中找到缓存,但它已过期,并已转发到后端。

已修改于2023-03-06 02:21
创作不易,留下一份鼓励
守望

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
守望
这家伙很懒还未留下介绍~
89
文章
0
问答
18
粉丝
相关文章
概述NGINX是一个多进程的架构模型,其中类似流量统计,流量控制,负载均衡等诸多功能需要在不同的worker进程之间共享数据,相互配合完成任务。这些功能都是通过共享内存的帮助来得以实现的。NGINX共享内存的实现依赖于slab内存分配机制。为了更高效地使用内存空间,slab内存分配机制采用了经典的时间换空间的思想。而且在增加的计算时间中,绝大部分都采用了位移操作,尽可能地在提高内存使用率的同时节省CPU时间。本文试着去从源代码层面去分析NGINX共享内存的分配使用的slab机制是如何实现的。共享内存原理共享内存是众多进程间通信方式之一,通过把相同的一块物理内存映射到不同进程的虚拟地址空间,这样不同的进程之间可以相互看到某一个进程对内存的修改。采用这种方式,进程可以直接读写内存,不需要额外的数据copy,所以它是最快的进程间通信方式。由于多个进程同享同一块内存区域,所以,需要某种同步机制比如NGINX使用的互斥锁进行同步。Linux内核支持多种共享内存方式,如基于IO映射的mmap()系统调用,Posix标准系列API,以及系统V的shm系列API方式。基于IO映射的mmap()系统调用
点赞 2
浏览 11.7k
【版本更新】NGINX JavaScript (NJS) 版本更新到 0.8.4,该版本可设置传出标头的服务器标头,并检查重复的 js_set 变量,还修复了 0.8.3 版本中引入的共享字典的 clear() 方法且没有超时,访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
点赞 1
浏览 4.3k