我无法判断 nginx 是否正确缓存。我正在运行一个 MEAN 堆栈应用程序,其中 nginx 在前面作为(希望)缓存反向代理。
如果我使用 chrome dev tools 网络选项卡,它有一个响应标头:X-Powered-By Express。
如果我执行 curl -I mysite.com,它会显示 302 暂时移动和服务器:nginx/version。我搞不清楚 express 还是 nginx 正在处理该请求。
我查看了我的服务器的控制台,它对每个请求都给出 304。
这是我在 sites-available/default 中的配置。nginx.config 是默认值。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m
inactive=24h max_size=1g;
server {
listen 80 default_server;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
add_header cache_status $upstream_cache_status;
}
}
cache_status 标头未显示命中、未命中或其他任何内容。
答案1
在看
/data/nginx/cache
看看那里是否有任何文件。
我有一个关于 Nginx 的教程,其中包括缓存这里。我认为你没有设置所有必需的设置,除非有些设置有默认设置,例如
fastcgi_cache_key "$scheme$request_method$host$request_uri";
如果你正在缓存的应用程序没有正确设置标头,则你可能需要在你的位置内执行此操作
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
阅读教程,它提供了更多提示。教程的前面部分向您展示了如何从源代码构建 Nginx,这允许您执行诸如在 mod_headers 中进行编译之类的操作,这对于添加用于调试的标头非常方便。