我尝试跟随本教程缓存请求yt3.ggpht.com。
我的配置如下:
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
listen 80 default_server;
location / {
proxy_cache my_zone;
add_header X-Proxy-Cache $upstream_cache_status;
proxy_set_header Host $http_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;
include proxy_params;
proxy_pass https://yt3.ggpht.com;
}
}
如果我在本地服务器上运行该链接,yt3.ggpht.com 将返回:
请求的 URL
/-C9gaunpPNo8/VYGWj4xT-uI/AAAAAAAAAGo/pUPfpvLF7Dc/w2120-fcrop64=1-nd-c0xffffffff-rj-k-no/
未在此服务器上找到。这就是我们所知道的全部。
如果我删除该proxy_set_header Host $http_host;
行,我的请求就会通过,但缓存不起作用。
如果我设置了它,为什么它不起作用Host
(如果我对另一个 dummy-ngnix 远程服务器运行请求,它会起作用)。
而且,为什么该参数Host
对于启用缓存是必要的?