18个运维必知的Nginx代理缓存配置技巧(你都掌握了哪些呢)

18个运维必知的Nginx代理缓存配置技巧

在进行Nginx代理缓存配置前,需要先了解以下18个运维必知的Nginx代理缓存配置技巧。

技巧1:缓存文件存储位置

在Nginx中,缓存文件的默认存储位置为/var/cache/nginx/。如果需要更改缓存文件的存储位置,可以在Nginx的配置文件中修改配置项:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

上述配置将缓存文件存储在/path/to/cache目录下,并设置了缓存目录层级结构,设置了缓存区域名为my_cache,设置了缓存的自动过期时间为60分钟。

技巧2:缓存的有效时间

为了避免缓存文件存储过久,需要设置缓存的有效时间。在Nginx中,可以使用proxy_cache_valid设置缓存的有效时间:

proxy_cache_valid 200 304 5m;
proxy_cache_valid 404 1m;

上述配置将设置状态码200和304缓存5分钟,状态码404缓存1分钟。

技巧3:缓存的大小限制

为了避免缓存文件过多,可以设置缓存大小限制。在Nginx中,可以使用proxy_cache_path配置缓存大小限制:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;

上述配置将设置缓存文件最大为1G。

技巧4:缓存的内存限制

除了设置缓存文件大小限制,还可以设置缓存的内存限制。在Nginx中,可以使用keys_zone设置缓存的内存限制:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m;

上述配置将设置缓存的内存限制为10M。

技巧5:缓存控制

为了更好地控制缓存文件的生成和使用,可以使用proxy_cache_bypassproxy_cache_key指令。在Nginx中,可以使用以下配置:

proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_authorization;
proxy_cache_key "$scheme$request_method$host$request_uri";

上述配置将设置缓存控制指令,通过$http_pragma$http_authorization设置禁止缓存的请求,通过"$scheme$request_method$host$request_uri"设置缓存文件存储的key值。

技巧6:缓存时清除响应头信息

在使用Nginx代理缓存时,需要清除响应头信息。在Nginx中,可以使用以下配置:

proxy_hide_header ETag;
proxy_hide_header X-Powered-By;

上述配置将隐藏ETag和X-Powered-By响应头信息。

技巧7:缓存时添加响应头信息

在使用Nginx代理缓存时,需要添加响应头信息。在Nginx中,可以使用以下配置:

add_header X-Cache $upstream_cache_status;

上述配置将添加X-Cache响应头信息。

技巧8:缓存时控制响应的Cookie和Set-Cookie

为了更好地控制缓存时的Cookie和Set-Cookie信息,可以使用以下配置:

proxy_cache_bypass $http_cookie;
proxy_cache_bypass $http_set_cookie;

上述配置将设置禁止缓存包含Cookie和Set-Cookie信息的请求。

技巧9:缓存错误页面

Nginx可以缓存错误页面,以避免重复地生成错误页面。在Nginx中,可以使用以下配置:

proxy_cache_key "$scheme$request_method$host$request_uri$proxy_host$error_page";

上述配置将设置缓存错误页面。

技巧10:缓存HTTPS页面

Nginx可以缓存HTTPS页面,以加快HTTPS页面响应速度。在Nginx中,可以使用以下配置:

proxy_cache_bypass $http_lastname;
proxy_cache_key "$scheme$request_method$host$request_uri";

上述配置将设置缓存HTTPS页面。

技巧11:设置缓存清除规则

为了避免缓存文件存储过久,可以设置自动清除缓存的规则。在Nginx中,可以使用以下配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
proxy_cache_purge on;

上述配置将设置缓存自动清除,并通过purge缓存控制指令清除缓存文件。

技巧12:禁用缓存

有时候需要禁用Nginx的缓存功能。在Nginx中,可以使用以下配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
proxy_cache_bypass $http_authentication;
proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_authorization;
proxy_cache_bypass $http_cache_control;

上述配置将禁用缓存功能。

技巧13:缓存目录层级结构

为了更好地管理缓存文件,可以设置缓存目录层级结构。在Nginx中,可以使用以下配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;

上述配置将设置缓存目录层级结构。

技巧14:缓存范围

可以通过配置缓存范围来更好地控制缓存文件的使用。在Nginx中,可以使用以下配置:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
proxy_cache_valid 200 1d;
proxy_cache_valid any 0;

上述配置将通过proxy_cache_valid设置缓存范围。

技巧15:获取缓存状态

为了更好地掌握缓存的使用情况,可以获取Nginx的缓存状态。在Nginx中,可以使用以下命令:

nginx -t // 检查Nginx配置文件是否正确
nginx -T // 打印Nginx配置文件的详细信息
nginx -s reload // 重新加载Nginx配置文件
nginx -s stop // 停止Nginx服务
nginx -s quit // 平缓地停止Nginx服务

技巧16:缓存负载均衡

为了更好地控制缓存负载均衡,可以使用以下配置:

upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081 backup;
}
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_bypass $http_pragma;
proxy_cache_bypass $http_authorization;
proxy_cache_bypass $http_cache_control;
proxy_pass http://backend;

上述配置将设置缓存负载均衡。

技巧17:缓存主动清除

有时候需要主动清除缓存文件。在Nginx中,可以使用以下命令:

nginx -s reload // 重新加载Nginx配置文件
nginx -c /path/to/nginx.conf -s reload // 重新加载指定的Nginx配置文件
nginx -c /path/to/nginx.conf -s reopen // 重新打开日志文件
nginx -c /path/to/nginx.conf -s stop // 停止Nginx服务
nginx -c /path/to/nginx.conf -s quit // 平稳地停止Nginx服务

技巧18:缓存时忽略HTTP协议

有时候需要忽略缓存的HTTP协议部分,可以使用以下配置:

proxy_cache_key "$request_method$http_host$request_uri";

上述配置将忽略缓存的HTTP协议部分。

示例说明1:缓存静态文件

为了减少服务器的负载压力,可以缓存静态文件。在Nginx中,可以使用以下配置:

server {
    listen 80;
    server_name www.example.com;
    root /path/to/html;
    location / {
        proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
        proxy_cache_methods GET HEAD;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 7d;
        proxy_cache_valid 404 1m;
        proxy_cache_bypass $http_pragma;
        proxy_cache_bypass $http_authorization;
        proxy_cache_bypass $http_cache_control;
        proxy_pass http://127.0.0.1:8080;
    }
}

上述配置将缓存静态文件的请求。

示例说明2:缓存动态文件

为了减少服务器的负载压力,可以缓存动态文件。在Nginx中,可以使用以下配置:

server {
    listen 80;
    server_name www.example.com;
    root /path/to/html;
    location / {
        proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
        proxy_cache_methods GET HEAD;
        proxy_cache_key "$scheme$request_method$host$request_uri";
        proxy_cache_valid 200 7d;
        proxy_cache_valid 404 1m;
        proxy_cache_bypass $http_pragma;
        proxy_cache_bypass $http_authorization;
        proxy_cache_bypass $http_cache_control;
        proxy_pass http://127.0.0.1:8080;
    }
    location ~ \.php$ {
        proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;
        proxy_cache_methods GET HEAD POST;
        proxy_cache_key "$scheme$request_method$host$request_uri$request_body";
        proxy_cache_valid 200 7d;
        proxy_cache_valid 404 1m;
        proxy_cache_bypass $http_pragma;
        proxy_cache_bypass $http_authorization;
        proxy_cache_bypass $http_cache_control;
        proxy_pass http://127.0.0.1:8080;
    }
}

上述配置将缓存动态文件的请求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:18个运维必知的Nginx代理缓存配置技巧(你都掌握了哪些呢) - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Nginx 安装 –编译模块参数

    公司空出来一些服务器,很久没有来练手了,于是便开始有了这篇博客,记录下过程。 Nginx 这个不多说了,名声在外,人们喜爱使用这款软件,主要还是因为它的高并发特性,公司也在用效果还不错,也用了它的一些其他扩展,用的最多的还是反向代理。不废话了  开始动手安装。 1安装前的准备 a : 下载安装包 我这里下载的是 1.2.5 版本 在Chinaunix 找的下…

    Nginx 2023年4月13日
    00
  • nginx 及 tomcat 端口冲突问题

    nginx   监听  80   转发   8088 tomcat 原先通过80 及 8088 都能访问,区别是 80就走nginx转发,8088则直接走tomcat 证据为: 80端口,nginx强行过滤掉css和js后,页面出来无样式和响应,而走8088的话,直接走tomcat,页面完整 再回到主题:原先80及8088都能访问,突然就不能访问了,百思不得…

    Nginx 2023年4月13日
    00
  • Nginx反向代理维基百科镜像制作全解析

    近日做的Ngnx代理测试,基于Nginx的ngx_http_substitutions_filter_module模块,并利用UA跳转实现PC/移动端不同站点跳转。 1. 关于Nginx的代理详细请转至:https://www.agawater.cn/?p=55 2. 个人Blog已转用cloudflare免费CDN,并在VPS做了v”two”ray+web…

    Nginx 2023年4月10日
    00
  • nginx 与 uWsgi 详解

    什么是nginx nginx是一个开源的,支持高性能,高并发的代理服务软件 nginx不但是一个优秀的web服务软件,还可以作为反想代理和负载均衡,以及缓存服务或使用 为什么使用nginx 支持高并发,能支持几万个并发链接 资源消耗少,三万并发编程开启10个nginx线程消耗不到200m 可以做反向代理和负载均衡 支持异步网络io事件模型epoll   ng…

    Nginx 2023年4月13日
    00
  • Ubuntu +PHP-fpm + Nginx 访问php界面空白的界面的分析

      系统环境: cat /etc/issue Ubuntu 14.04.5 LTS \n \l   linux 内核: root@xxxx:~# uname -a Linux iZwz9gx93mlg0b8kzke0b9Z 4.4.0-81-generic #104~14.04.1-Ubuntu SMP Wed Jun 14 12:45:52 UTC 201…

    Nginx 2023年4月10日
    00
  • nginx配置文件特殊字符说明

    开发过程中经常重复配置nginx.conf,对里面的特殊字符始终不太明白具体的意义,今天百度nginx配置看到一篇不错的文章,转载记录下来,以备不时之需。 nginx rewrite 正则表达式匹配 大小写匹配 ~ 为区分大小写匹配  ~* 为不区分大小写匹配  !~和!~*分别为区分大小写不匹配及不区分大小写不匹配  文件及目录匹配 -f和!-f用来判断是…

    Nginx 2023年4月11日
    00
  • centos7部署nginx与vue搭配及403排错

    *以下都是在centos7系统下进行 一.安装 添加yum源sudo rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 安装sudo yum install nginx 配置服务 设置开机启动sudo syst…

    Nginx 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部