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心跳检测 upstream springboot { server 10.3.73.223:8080 max_fails=2 fail_timeout=30s; server 10.3.73.223:8090 max_fails=2 fail_timeout=30s; } server { listen 80; server_name localh…

    Nginx 2023年4月10日
    00
  • Nginx 设置cors跨域

    在我们的开发中,经常遇到跨域,这个时候,可以通过cors来解决。 解决的方法可以在服务端的代码层或者在web服务器进行设置 在web服务器上进行设置cors 跨域,这样就不必改动代码。以nginx为例子 提示:有时候我们的后端是PHP文件,则需要把跨域的代码加 location ~ \.php(.*)$ 中。 location / { if ($reques…

    Nginx 2023年4月12日
    00
  • window nginx 基础命令

    在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。(说明:打开cmd窗口) 1、启动: C:\server\nginx-1.0.2>start nginx 或 C:\server\nginx-1.0.2>nginx.exe 注:建议使用第一种,第二种…

    Nginx 2023年4月11日
    00
  • nginx配置Strict Transport Security

    一个网站接受一个HTTP的请求,然后跳转到HTTPS,用户可能在开始跳转前,通过没有加密的方式和服务器对话,比如,用户输入http://zt.test.com或者直接zt.test.com。这样存在中间人攻击潜在威胁,跳转过程可能被恶意网站利用来直接接触用户信息,而不是原来的加密信息。网站通过HTTP Strict Transport Security通知浏…

    Nginx 2023年4月13日
    00
  • nginx日志配置笔记:if条件

    1、特定条件写日志: 参照: https://stackoverflow.com/questions/19011719/how-to-write-only-logs-with-200-status http://nginx.org/en/docs/http/ngx_http_map_module.html http { map $status $normal…

    Nginx 2023年4月12日
    00
  • Nginx的基本概念和原理

    以下是详细讲解 Nginx 的基本概念和原理的完整攻略,其中包含两条示例说明。 Nginx 的基本概念和原理 什么是 Nginx? Nginx 是一款轻量级、高性能的 Web 服务器。它不仅可以作为 Web 服务器使用,还可以作为反向代理、负载均衡器和 HTTP 缓存等多种用途。Nginx 采用了基于事件驱动的异步非阻塞处理模式,效率比传统的同步阻塞处理模式…

    Nginx 2023年5月16日
    00
  • 通过Nginx代理转发配置实现跨域的方法(API代理转发)

    接下来我会详细讲解通过Nginx代理转发配置实现跨域的方法。这种方法通常用于解决前端应用在访问不同域的API服务时会存在的跨域问题。 简介 跨域是指浏览器从一个域名的网页去请求另一个域名的资源,这里的域名可以理解为协议、主机名、端口号的组合。通常情况下,浏览器限制了脚本中发起跨域HTTP请求。这种安全机制可以有效的防止一些跨站攻击,并保证用户的安全。但是在前…

    Nginx 2023年5月16日
    00
  • nginx系列(nginx启动、关闭控制 windows)

    入标题中这是在windows环境下面操作的: 下面的文件代码: @echo off rem 当前bat的作用 echo ==================begin======================== cls SET NGINX_PATH=D: SET NGINX_DIR=D:\nginx\ color 0a TITLE Nginx 管理程序 …

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