Nginx кэширование с Azure хранилищем BLOB-объектов - PullRequest
0 голосов
/ 10 февраля 2020

Локальное кэширование работает нормально, однако попытка кэшировать файловый сервер с помощью Azure хранилища BLOB-объектов не работает.

При каждом запросе подпись изменяется и не возвращает никаких заголовков кэширования. Я думаю, что из-за этой подписи в конце? Кто-нибудь понял, как это превзойти?

https://accountname.blob.core.windows.net/static/assets/js/jquery331.min.js?se=2020-02-10T15%3A06%3A35Z&sp=r&sv=2019-09-28&sr=b&sig=<Signature>

Ниже мой nginx конфиг. Это в основном основано на этом = https://serversforhackers.com/c/nginx-caching

upstream app {
    server web:8000;
}

proxy_cache_path ./cache keys_zone=one:10m loader_threshold=300 loader_files=200;
proxy_cache_key "$scheme$request_method$host$request_uri";



# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/css                   max;
    application/javascript     max;
    ~image/                    max;
}

server {

    include mime.types;

    listen 80;
    listen [::]:80;
    root /usr/src/application/;
    index /usr/src/application/main/;

    gzip on;
    gzip_comp_level 2;
    gzip_http_version 1.0;
    gzip_proxied any;
    gzip_min_length 1100;
    gzip_buffers 16 8k;
    gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript script text/script;
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    gzip_vary on;


    location / {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;

    }

    location /staticfiles/ {
        proxy_cache one;
        proxy_buffering on;
        add_header X-Proxy-Cache $upstream_cache_status;
        proxy_http_version      1.1;
        proxy_set_header        Connection "";
        proxy_set_header        Authorization '';
        proxy_set_header        Host https://accountname.blob.core.windows.net/static;
        proxy_pass              https://accountname.blob.core.windows.net;
    }

    location /media/ {
        proxy_http_version      1.1;
        proxy_set_header        Connection "";
        proxy_set_header        Authorization '';
        proxy_set_header        Host https://accountname.blob.core.windows.net/media;
        proxy_pass              https://accountname.blob.core.windows.net;
    }

    # cache.appcache, your document html and data
    location ~* \.(?:manifest|appcache|html?|xml|json)$ {

      expires -1;
    }

    # Feed
    location ~* \.(?:rss|atom)$ {


      expires 1h;
      add_header Cache-Control "public";
    }

    # Media: images, icons, video, audio, HTC
    location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {


      expires 1M;
      access_log off;
      add_header Cache-Control "public";
    }

    # CSS and Javascript
    location ~* \.(?:css|js)$ {


      expires 1y;
      access_log off;
      add_header Cache-Control "public";
    }

  location /media/ {

    alias /usr/src/application/main/media;
  }

    proxy_connect_timeout 300s;
    proxy_read_timeout 300s;
    proxy_next_upstream error timeout http_502;
    location /index/ {
        alias /usr/src/application/main/;
    }
}

1 Ответ

0 голосов
/ 20 февраля 2020

Итак, я нашел, что вызвало строки запроса. Мы используем django хранилища, так как возможна опция для переменной AZURE_URL_EXPIRATION_SECS, которая добавляет строку запроса. На данный момент кеширование работает без CDN. Однако меня удивляет, что с активным CDN и установленными правилами игнорирования строк запроса кэширование не происходит.

...