我在 nginx 代理后面有一个 REST API。代理工作正常,但我无法缓存任何响应。任何帮助将非常感激:
Nginx 配置:
worker_processes 10;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
proxy_cache_path /path/to/cache/dir keys_zone=one:60m;
proxy_cache_methods GET HEAD POST;
upstream backend {
server server1 backup;
server server2 weight=5;
}
access_log logs/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 7076;
server_name localhost;
#charset koi8-r;
access_log logs/host.access.log;
location / {
add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept';
add_header 'Access-Control-Allow-Methods' 'GET, …Run Code Online (Sandbox Code Playgroud) 我刚刚在一个新环境中部署了 nginx,其配置与我之前使用的配置相同,但我看到了一些非常奇怪的行为。
Nginx 被配置为 Solr 的反向代理,当我尝试通过 nginx 访问 Solr UI 时,大约需要一分钟才能加载。我检查了 Chrome 开发工具,看起来浏览器可以立即下载 6 个文件,但是所有其他请求都处于待处理状态。然后它只在那里停留一分钟,然后一切都被下载并加载页面。之后,浏览速度很快;我认为这主要是因为本地浏览器缓存。
这是配置:
worker_processes 10;
error_log /directory/path/error.log debug;
pid /directory/path/nginx1.pid;
events {
worker_connections 1024;
}
http {
access_log /directory/path/access.log;
proxy_temp_path /directory/path/ 1 2;
upstream backend-test-old {
server 1.1.1.1:7071;
server 2.2.2.2:7071;
}
server {
listen 7071;
server_name localhost;
access_log /directory/path/access_7071.log;
proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";
location /solr {
proxy_pass http://backend-test-old;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也在日志中看到了很多这些:
2015/07/10 11:06:38 [warn] 31503#0: *120 an upstream response is buffered to a temporary file /dir/path/7/00/0000000007 …Run Code Online (Sandbox Code Playgroud)