我有 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?
}
}
}
答案1
请求处理程序始终针对某个位置明确设置。因此,proxy_pass 不会被继承。
答案2
嵌套位置迟早会给您带来麻烦;非平凡的继承规则和必须复制粘贴的配置都很可能会导致不必要的问题。
相反,您可以定义一个变量(set $dont_cache_this 1
),在“已知静态”内容上选择性地将其设置为零,并将其与proxy_no_cache指示。