Прозрачно кеширане в nginx за всички
Нека си представим, че имаме сайт, на който редовно се дават връзки от Habr. Трябва да го подготвим за скок в посещаемостта. Как да го направим?
От версия 0.8.46 nginx добави опции, които ви позволяват лесно да настроите прозрачно кеширане за анонимни потребители.
За да работи тази схема, се изисква много малко от сайта: достатъчно е просто да не стартирате сесия, тоест да не изпращате бисквитка за сесия, освен ако не е абсолютно необходимо. Един рядък сайт не може да бъде доведен до такова състояние, което означава, че повечето сайтове могат да бъдат защитени от внезапни изблици на трафик с помощта на nginx с минимални усилия и време.
Ние ще научим сайта да стартира сесията само когато е необходимо
За широко разпространени PHP сайтове това може да стане чрез настройка на session.auto_start на нула в php.ini или по-добре в настройките на виртуалния хост на Apache. Също така трябва да зададем подходящо име за сесийната бисквитка:
Ако самият сайт стартира сесията в кода, тогаваsession_start()трябва да се замени с:
Така сесията ще бъде стартирана само ако
- сесийната бисквитка вече съществува или ако
- ни се изпраща формуляр, например с потребителско име и парола.
Настройте nginx да кешира заявки без бисквитка за сесия
След като се уверим, че сайтът не изпраща бисквитка за сесия на гостите на сайта, ще конфигурираме nginx да кешира заявки без бисквитка за сесия.
Във всяко удобно място, например в конфигурацията на виртуалния хост на nginx преди сървърния блок, добавете редовете:
Не забравяйте да създадете подходящите директории:
В съответния блок за местоположение добавете маркираните три реда:
Кеширане за фина настройка
За да деактивирате напълно кеширането, като например броячи, използвайте:
Тест за сила
Нека проверим главната страница на сайта за сила в сто теми:
С използването на кеширане тестовият сайт лесно даде повече от 100 rps, което е разбираемо. Няма кеш - предвидимо показва грешка 503
Принудително актуализиране на кеша
Ако директивата proxy_cache_bypass се промени по следния начин:
Тогава ще бъде възможно принудително обновяване на кеша на страницата, ако е необходимо:
По-добре е да замените заглавието с всяко друго, известно само на вас.
И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".