我有一个在英国运行的 RESTful API,但不知何故,它对澳大利亚用户来说太慢了。所以我想做的是,在澳大利亚服务器上放置一个 nginx 代理,并缓存一些路由 1、10 和 60 分钟,而根本不缓存其余路由。
我不确定 nginx 是否可以实现这一点,但这就是我所做的;
server {
listen 80;
server_name proxycache.domain.com;
access_log /var/log/nginx/reverse.log upstreamlog;
proxy_ignore_headers Set-Cookie;
proxy_hide_header Set-Cookie;
proxy_ignore_headers Cache-Control;
proxy_ignore_headers Vary;
proxy_ignore_headers X-Accel-Redirect;
proxy_ignore_headers X-Accel-Expires;
proxy_ignore_headers X-Accel-Limit-Rate;
proxy_ignore_headers X-Accel-Buffering;
proxy_ignore_headers X-Accel-Charset;
proxy_ignore_headers Expires;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host data.domain.com;
add_header X-Cache $upstream_cache_status;
proxy_redirect off;
proxy_cache STATIC;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_cache_min_uses 1;
location /api/a {
proxy_pass http://data.domain.com/api/a;
proxy_cache_valid 200 301 302 1m;
break;
}
location /api/b {
proxy_pass http://data.domain.com/api/b;
proxy_cache_valid 200 301 302 60m;
break;
}
location / {
proxy_pass http://data.domain.com/;
proxy_cache_valid 200 301 302 0s;
break;
}
}
如果我请求/api/a
或/api/b
或任何其他 URL,它都可以正常工作,但如果我再次发送类似的请求/api/a/some_other_var
,它会再次转到最后一个位置而不是第一个位置。那么我做错了什么?