Skip to content

Instantly share code, notes, and snippets.

@manjuraj
Forked from yanmhlv/gist:5612256
Created June 8, 2016 03:55
Show Gist options
  • Save manjuraj/fd06b01a48b517ffd80e26706cf342d8 to your computer and use it in GitHub Desktop.
Save manjuraj/fd06b01a48b517ffd80e26706cf342d8 to your computer and use it in GitHub Desktop.
nginx proxy_cache
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=microcache:5m max_size=1000m;
server {
listen 80;
server_name cache.example.ru;
# кешируемый адрес
location / {
# кеш включен по умолчанию
set $no_cache "";
# отключаем кеш для всех методов, кроме GET и HEAD
if ($request_method !~ ^(GET|HEAD)$) {
set $no_cache "1";
}
# в случае если клиент загружает контент на сайт
# (no_cache = 1), делаем так, чтобы отдаваемые
# ему данные не кешировались в течении двух
# секунд и он смог увидеть результат загрузки
if ($no_cache = "1") {
add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/";
add_header X-Microcachable "0";
}
if ($http_cookie ~* "_mcnc") {
set $no_cache "1";
}
# включаем/отключаем кеш в зависимости
# от состояния переменной no_cache
proxy no_cache $no_cache;
proxy cache_bypass $no_cache;
# проксируем запросы на реальный сервер
proxy_pass http://appserver.example.ru;
proxy_cache microcache;
proxy_cache_key $scheme$host$request_method$request_uri;
proxy_cache_valid 200 1s;
# защита от проблемы Thundering herd
proxy_cache_use_stale updating;
# добавляем стандартные хедеры
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# Не кэшировать файлы размером больше 1M
proxy_map_temp_file_size 1M;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment