У меня есть несколько приложений django, которые я хотел бы попробовать кэшировать с помощью NGINX. Я следовал этому руководству. https://www.nginx.com/blog/nginx-caching-guide/
Я использовал include
директива для включения файла с этой строкой в http
блок ...
proxy_cache_path /usr/share/nginx/cache levels=1:2 keys_zone=my cache:10m max_size=2g inactive=60m use_temp_path=off;
Затем я пошел в sites-enabled
папку и добавил это в мои серверные блоки, это блоки ssl ...
server {
listen 443 ssl;
server_name example.com;
ssl_certificate my/path/to/ssl;
ssl_certificate_key my/path/to/ssl;
client_max_body_size 4G;
keepalive_timeout 5;
# Your Django project's media files - amend as required
location /media {
proxy_cache my_cache;
alias /home/example/media;
}
# your Django project's static files - amend as required
location /static {
proxy_cache my_cache;
alias /home/example/example/static_dump;
}
location / {
#Next two lines added while developing includes only ip's in the file
include /etc/nginx/ip-allow.conf;
deny all;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_cache my_cache;
proxy_pass http://app_server_example;
}
Когда я проверяю путь к файлу кеша, я вижу, что он создал ./tmp
папку, поэтому я думаю, что разрешения правильные, и когда я перезапустил nginx с nginx -s reload
а потом позже service nginx restart
Ошибок не было.
Почему бы в этих каталогах кеширования не отображались файлы после того, как на мой сайт были запросы?
Скорее всего, ваше приложение Django возвращает заголовки HTTP-кеширования, которые не позволяют кешировать страницы.
Если вы хотите игнорировать кеширующие заголовки Django, вы можете использовать это:
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;