2017-02-05 20 views
2

У меня есть сайт Django, на котором каждые несколько секунд публикуется новый контент.Настройка микрокаши прокси-сервера Nginx для определенного места в блоке сервера

Уполномоченные пользователи на домашней странице моего сайта размещаются на /, тогда как неавторизованные на /unauth. /unauth похож по размеру как /, но без каких-либо персональных данных. На моем веб-сайте используется nginx (обратный прокси) с пушкой, как вверх по течению.

Я пытаюсь реализовать nginx microcaching на location/unauth, но до сих пор не увенчался успехом (ничего не появляется в /var/cache/nginx). Добавление add_header X-Cache-Status $upstream_cache_status; в location/unauth ничего не дает в ответе. Это почти так же, как блок loction полностью игнорируется (!).

Можете ли вы помочь мне устранить эту проблему? Дайте мне знать, если вы хотите увидеть весь nginx.conf.


Я добавил следующее в моем Nginx конфигурационном файле:

#outside the server block 
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=100m inactive=6m; 

    #inside the server block 
    location /unauth { 
     add_header X-Cache-Status $upstream_cache_status; 
     proxy_cache my_cache; 
     proxy_cache_lock on; 
     proxy_cache_valid 200 1s; 
     proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504; 

     proxy_buffering on; 
     proxy_buffers 24 4k; 
     proxy_buffer_size 2k; 
     proxy_busy_buffers_size 8k; 

     try_files $uri @http_proxy_to_app; 
    } 

Заголовок ответа HTTP производится из http://example.com/unauth/ выглядит следующим образом:

Status:    HTTP/1.1 200 OK 
Server:    nginx 
Date:    Sun, 05 Feb 2017 00:10:03 GMT 
Content-Type:  text/html; charset=utf-8  
Transfer-Encoding: chunked 
Connection:   close 
Vary:    Accept-Encoding 
Expires:   Sun, 05 Feb 2017 00:10:13 GMT 
Vary:    Cookie 
Last-Modified:  Sun, 05 Feb 2017 00:10:03 GMT 
Cache-Control:  max-age=10 
X-Frame-Options: SAMEORIGIN 
Content-Encoding: gzip 
+0

Можете ли вы добавить «add_header X-Cache-Status $ upstream_cache_status;» в блок местоположения и повторить запрос? Это предоставит некоторую информацию о том, не попал ли запрос в кеш. –

+1

Попробуйте изменить его на www-data: www-data. Это также может быть связано с тем, что вы выполняете внутреннее перенаправление на @http_proxy_to_app. В качестве теста вы можете добавить конфигурацию кеша в этот блок? –

ответ

1

Причина кэш WASN Работа была из-за внутреннего перенаправления на @http_proxy_to_app. Прокси-сервер должен быть в контексте переадресации.

+0

быстрое уточнение. Если uri содержит аргументы или параметры (например, 'http: //example.com/unauth/? Page = 2 # section18'), будет ли блок местоположения' location/unauth' в nginx.conf улавливать такой uri? –