gpt4 book ai didi

nginx - 如何为 REST API 正确配置 Nginx 缓存?

转载 作者:行者123 更新时间:2023-12-04 14:13:25 27 4
gpt4 key购买 nike

案件:
我有 REST API 通过 HTTPS,我想在我的主机上配置一个基本的缓存代理服务来缓存 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_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 "https://example.com/myapi/?key=1"
代理请求示例:
    curl "http://127.0.0.1:8080/myapi/?key=1"
在 REST API header 中,我可以看到
cache-control: max-age=0, no-cache, no-store, must-revalidate
Nginx 可以以某种方式忽略它吗?
我应该在代理配置中更改哪些内容以查看 REST API 的提升?
我想知道这个问题是否与 HTTPS 流量有关?或者来自 REST API 的响应有一些 NoChaching header ,或者响应的大小太小而无法缓存?

最佳答案

终于找到了为我的 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;
}

}

关于nginx - 如何为 REST API 正确配置 Nginx 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62531393/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com