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_bypass
和proxy_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技术站