如何为RESTAPI正确配置Nginx缓存?
案例: 我有通过HTTPS的RESTAPI,我想在我的主机上配置一个基本的缓存代理服务来缓存API请求,并像往常一样更快地获得相同的信息 我有Nginx的以下配置:如何为RESTAPI正确配置Nginx缓存?,nginx,caching,nginx-config,Nginx,Caching,Nginx Config,案例: 我有通过HTTPS的RESTAPI,我想在我的主机上配置一个基本的缓存代理服务来缓存API请求,并像往常一样更快地获得相同的信息 我有Nginx的以下配置: proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; http { server { location /my_ap
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=10g
inactive=60m use_temp_path=off;
http {
server {
location /my_api/ {
proxy_redirect off;
proxy_buffering on;
proxy_ignore_headers X-Accel-Expires;
proxy_ignore_headers Expires;
proxy_ignore_headers Cache-Control;
proxy_cache my_cache;
proxy_pass https://example.com/myapi/;
}
}
}
现在我比较了REST API和我的本地代理服务的响应时间,REST API调用远程服务和本地代理服务的响应时间是一样的,这意味着缓存不起作用。
此外,缓存目录为空
对真实API的示例或请求(这不是真实情况):
请求代理的示例:
curl "http://127.0.0.1:8080/myapi/?key=1"
在RESTAPI标题中,我可以看到
cache-control: max-age=0, no-cache, no-store, must-revalidate
Nginx可以忽略它吗
我应该在代理配置中更改什么才能看到RESTAPI的增强?
我想知道这个问题是否与HTTPS流量有关?或者来自REST API的响应有一些NoChaching头,或者响应的大小太小,无法缓存?终于找到了为我的REST API配置缓存的方法,以下是最终配置:
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m;
server {
listen 8080;
server_name localhost;
location /myapi {
proxy_buffering on;
proxy_ignore_headers Expires Cache-Control X-Accel-Expires;
proxy_ignore_headers Set-Cookie;
proxy_cache my_cache;
proxy_cache_valid 24h;
proxy_pass https://example.com/myapi;
}
}
同样的问题没有答案
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m;
server {
listen 8080;
server_name localhost;
location /myapi {
proxy_buffering on;
proxy_ignore_headers Expires Cache-Control X-Accel-Expires;
proxy_ignore_headers Set-Cookie;
proxy_cache my_cache;
proxy_cache_valid 24h;
proxy_pass https://example.com/myapi;
}
}