我有 nginx 作为反向代理运行。目前,这仅提供集中式 SSL 终止和互联网连接。我想为静态内容启用缓存。
代理上虚拟主机的配置看起来像......
server {
listen 443 ssl http2;
server_name www.example.com;
...
location / {
include snippets/proxydefaults.conf;
proxy_pass http://www.example.com.origin/;
}
}
我不确定源服务器上的缓存是否正确设置,因此我只想缓存我知道是静态文件的东西。如果我嵌套缓存配置,是否需要重复配置以应用代理,或者这是从父位置继承的......
server {
listen 443 ssl http2;
server_name www.example.com;
...
location / {
include snippets/proxydefaults.conf;
proxy_pass http://www.example.com.origin/;
location ~* \.(gif|png|jpg|jpeg|js|css)$ {
proxy_cache default_cache;
# do I need to explicitly add another proxy_pass directive here?
}
}
}
请求处理程序总是为一个位置显式设置。所以 proxy_pass 不会被继承。
嵌套位置迟早会咬你;重要的继承规则和必须复制粘贴配置都很可能导致不必要的问题。
相反,您可以定义一个变量 (
set $dont_cache_this 1
),在“已知静态”内容上选择性地将其设置为零,并将其与proxy_no_cache指令结合使用。