小编D. *_*ans的帖子

可以让 nginx 缓存包含 X-Accel-Redirect 标头的上游响应吗?

我在应用程序服务器前使用 nginx 作为反向代理。应用程序响应一个 X-Accel-Redirect 标头,告诉 nginx 要提供哪个静态文件。我希望能够做的是让 nginx 缓存其中一些上游响应,以便它可以在不访问应用程序服务器的情况下提供正确的文件。

不幸的是,这不起作用:nginx 似乎拒绝缓存任何带有 X-Accel-Redirect 标头的响应。如果我不使用 X-Accel-Redirect 并让应用程序服务器返回文件本身,那么缓存工作完美。然而,这不是很有效,因为应用服务器必须从磁盘读取文件并将其发送到 nginx,然后 nginx 将文件写回磁盘(在其缓存中)并将其发送到客户端。

这是我的 nginx 配置的精简版:

proxy_cache_path /tmp/nginx-cache keys_zone=testzone:10m;

server {
    location / {
        proxy_cache testzone;
        proxy_pass http://localhost:8000/;
    }

    location /static-files/ {
        internal;
        alias /var/static-files/;
    }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我正在尝试做的事情是否可行?我的怀疑是,当 nginx 发现 X-Accel-Redirect 标头时,它会立即跳转到处理提供的 URI 并跳过正常的缓存逻辑,但最好能确认这一点。

nginx cache reverse-proxy

6
推荐指数
1
解决办法
3571
查看次数

标签 统计

cache ×1

nginx ×1

reverse-proxy ×1