-
-
Save manjuraj/fd06b01a48b517ffd80e26706cf342d8 to your computer and use it in GitHub Desktop.
nginx proxy_cache
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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