Nginx从nginx文件夹获取内容而不是从磁盘caching中获取内容

我有我的应用程序在docker集装箱和其他服务图像(image processing器)。 我得到的所有图像像这样: imageprocessor.iwsolutions.local/blob-storage/image.jpeg?size=small

Nginx作为代理服务器和caching。 对于这个服务,我已经写了configuration脚本nginx与后备:

 worker_processes 4; events { worker_connections 1024; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; fastcgi_read_timeout 300; types_hash_max_size 2048; server_names_hash_bucket_size 64; client_max_body_size 200M; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; gzip_disable "msie6"; map $sent_http_content_type $expires { default off; text/html epoch; text/css 30d; application/javascript 30d; ~image/ 30d; } include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

和具体的服务:

 upstream imageprocessor_servers { server imageprocessor:5000; } server { listen 443 ssl; server_name imageprocessor.iwsolutions.local; ssl_certificate certs/imageprocessor.iwsolutions.cz.crt; ssl_certificate_key certs/imageprocessor.iwsolutions.cz.key; root /var/www/nginx/; location / { proxy_pass http://imageprocessor_servers; proxy_set_header Host $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-Host $server_name; } location @fallback { proxy_pass http://imageprocessor_servers; proxy_set_header Host $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-Host $server_name; } location ~ "^/blob-storage/(.*)$" { try_files /imageCache/$1 @fallback; expires 30d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } } 

Finaly的nginxconfiguration为我的应用程序:

  upstream app_servers { server myapp:5003; } server { listen 80; server_name myapp.local www.myapp.local; return 301 https://myapp.local$request_uri; } server { listen 443 ssl; server_name www.myapp.local; ssl_certificate certs/myapp.cz.crt; ssl_certificate_key certs/myapp.cz.key; return 301 https://myapp.local$request_uri; } server { listen 443 ssl; server_name myapp.local; root /var/www/myappNew/WebRoot/; ssl_certificate certs/myapp.cz.crt; ssl_certificate_key certs/myapp.cz.key; location / { proxy_pass http://app_servers; proxy_redirect off; proxy_set_header Host $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-Host $server_name; } expires $expires; } 

因此,对于解释:在image processing器有创buildcaching文件夹的方法和特定图像的GET请求后,添加它(如果不存在,closures课程)。 在文件夹之后,将docker卷挂载到nginx目录。

当nginx获得第一个请求并且图像不存在时,调用回退和image processing器。 在另一个请求之后,从磁盘caching中取出或更好。 这是个问题。 在谷歌铬检查器,图像有所有标题似乎正确。 但在“大小”列“(从磁盘caching)”的标志,像其他静态图像已经丢失。

从目录请求是正确的,而不是从后备(我已经build立了日志和负载非常快 – 例如6ms)。 但看起来nginx总是从本身获取映像,而不是从磁盘caching中获取映像。

这怎么可能? 哪里不对? 感谢您的时间。