Nginx反代配置,缓存60s。可以开箱即用

在 Nginx 中,缓存键的生成可以通过 proxy_cache_key 指令来控制。默认情况下,proxy_cache_key 的值是由主机名、URI、查询字符串等构成的,但是你可以自定义这个键的组成部分。

示例配置

以下是一个包含 request_host 作为缓存键一部分的配置示例:

http {
proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# 对 /admin 路径不缓存
proxy_no_cache $request_uri ~* “/admin”;
proxy_cache_bypass $request_uri ~* “/admin”;

# 检查请求头中的 Pragma 是否为 no-cache
proxy_no_cache $http_pragma; # 这里直接使用变量,若匹配则不缓存
proxy_cache_bypass $http_pragma; # 同时绕过缓存

 

# 自定义缓存键,将主机名、URI和查询字符串作为缓存键的一部分
proxy_cache_key “$scheme$host$request_uri”;

# 启用缓存
proxy_cache my_cache;

# 默认缓存配置
proxy_cache_valid 200 60s;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;
}
}
}

 

关键点解释:

  • proxy_cache_key “$scheme$host$request_uri”:这是自定义缓存键的指令。这里 $host 代表请求的主机名,$scheme 代表请求的协议(如 httphttps),$request_uri 包含 URI 和查询字符串。这样配置后,不同主机名的相同 URI 会生成不同的缓存键,从而避免冲突。
  • proxy_cache:启用指定的缓存区。
  • proxy_cache_valid:设置缓存有效期。

总结

通过自定义 proxy_cache_key,你可以将 request_host 纳入缓存键的一部分,这样就能确保针对不同主机名的请求生成不同的缓存对象。这在你托管多个域名或子域名时特别有用。


发表评论 0

Your email address will not be published. Required fields are marked *