Я использую nginx в качестве фронтального сервера, я изменил файлы CSS, но nginx все еще обслуживает старые.
Я попытался перезапустить nginx, но безуспешно, и у меня есть Google, но я не нашел правильного способа его очистки.
В некоторых статьях говорится, что мы можем просто удалить каталог кэша:, var/cache/nginx
но на моем сервере такого каталога нет.
Что мне теперь делать?
proxy_cache
?cache
, но не нашел ее в файлах конфигурацииОтветы:
У меня была точно такая же проблема - я запускал свой nginx в Virtualbox. У меня не было включено кэширование. Но похоже, что
sendfile
было установленоon
вnginx.conf
и это вызывало проблему. @kolbyjack упомянул это выше в комментариях.Когда я выключил
sendfile
- все работало нормально.Это потому что:
Это связано с этой ошибкой: https://www.virtualbox.org/ticket/12597
источник
Вы также можете обойти / повторно кэшировать файл за файлом, используя
и в качестве бонуса вы можете вернуть этот заголовок, чтобы увидеть, получили ли вы его из кэша (вернет «HIT») или с сервера контента (вернет «BYPASS»).
чтобы истечь / обновить кэшированный файл, используйте curl или любой другой клиент для отправки запроса на кэшированную страницу.
это вернет свежую копию элемента, а также заменит то, что находится в кеше.
источник
Если вы не настроили зону кэша через proxy_cache_path, а затем использовали ее (например, в блоке местоположения), через: proxy_cache ничего не будет кэшировано.
Если вы сделали, однако, то, по словам автора nginx , достаточно просто удалить все файлы из каталога кэша.
Самый простой способ:
find /path/to/your/cache -type f -delete
источник
[crit] 1640#0: unlink() "/path/to/cache/85/1cc5328db278b328f2c200c65179ad85" failed (2: No such file or directory)
Вы можете удалить каталог кеша nginx или Вы можете искать конкретный файл:
И удалите только один файл, чтобы nginx обновил их.
источник
grep -lr 'http://mydomain.pl/css/myedited.css$' /var/nginx/cache/*
grep: /var/nginx/cache/*: No such file or directory
я использую Ubuntu 14.04.3 LTS и nginx / 1.8.1. Любая идея?sudo find /var/nginx/cache -type f -exec grep -l '/css/myedited.css' {} \;
В этом вопросе два ответа.
Использование:
НАПРИМЕР:
источник
Я нашел это полезным
Ищите, и если нашли, то удалите.
источник
В моей установке nginx я обнаружил, что должен был перейти к:
и
в этом каталоге. Если вы знаете путь к вашей установке nginx и можете найти каталог кеша, то это может сработать для вас. Будьте очень осторожны с
rm -rf
командой, если вы находитесь не в том каталоге, вы можете удалить весь жесткий диск.источник
Я запускаю очень простой скрипт bash, который занимает все 10 секунд, чтобы выполнить работу, и отправляет мне письмо, когда закончите.
источник
У меня тоже была эта проблема.
Мой домен использует cloudflare.com для DNS (отличный сервис!). Ага! Там это было:
cloudflare.com -> кеширование -> Очистить кэш (я все очистил) Это решило мою проблему!
источник
У нас есть очень большой кэш nginx (гигабайт), который нам иногда нужно стереть. Я разработал скрипт, который мгновенно очищает кеш (что касается Nginx), а затем удаляет каталог кеша, не останавливая основное приложение для дискового ввода-вывода.
В итоге:
Вот скрипт, адаптированный для Ubuntu 16.04 LTS, с кешем, расположенным по адресу
/mnt/nginx-cache
:И в случае, если это полезно, вот конфиг Nginx, который мы используем:
источник
Для тех, у кого другие решения не работают, проверьте, используете ли вы службу DNS, такую как CloudFlare . В этом случае активируйте «Режим разработки» или воспользуйтесь инструментом «Очистить кэш».
источник
Обратите внимание, что proxy_cache_bypass может навредить вам, если ваше приложение не вернет кэшируемый ответ на тот конкретный запрос, когда вы его инициируете.
Если, например, ваше приложение отправляет куки-файл при каждом первом запросе, то скрипт, который запускает proxy_pass_bypass через curl, вероятно, получит этот куки-файл в ответе, и nginx не будет использовать этот ответ для обновления кэшированного элемента.
источник
Будьте осторожны, чтобы правильно указать правильный путь.
источник
Для тех, кто пытался удалить файлы кеша nginx, и он либо не работал, либо работал с перебоями, взгляните на ваши настройки open_file_cache. Если этот параметр включен и настроен для кэширования дескриптора файла в течение длительного времени, то Nginx может по-прежнему видеть версию кэшированного файла, даже после того, как вы удалили его с диска. Мне пришлось уменьшить open_file_cache_valid до 1 с (я не уверен, что это по сути то же самое, что полное отключение файлового кэша).
источник
На моем сервере папка кеша nginx находится по адресу
/data/nginx/cache/
Поэтому я удалил это только:
sudo rm -rf /data/nginx/cache/
Надеюсь, это кому-нибудь поможет.
источник
Если вы хотите очистить кеш определенных файлов, вы можете использовать
proxy_cache_bypass
директиву. Вот как ты это делаешьТеперь, если вы хотите обойти кеш, вы получите доступ к файлу, передав параметр nocache
http://www.example.com/app.css?nocache=true
источник
app.css?nocache=true
), а исходный файл (без запроса) остается в кэше (app.css
)?Вы можете добавить конфигурацию в nginx.conf следующим образом.
Сверху в / tmp / динамически создается папка с именем «nginx_cache» для хранения кэшированного содержимого.
источник
Есть один правильный способ удалить только кеш-файлы, который соответствует любому KEY. Например:
Это удаляет все кеш-файлы, которые соответствуют KEY "yahoo / *", если в nginx.conf было установлено:
источник
Мы используем nginx для кэширования большого количества вещей. В каталоге кеша находятся десятки тысяч элементов. Чтобы найти элементы и удалить их, мы разработали несколько скриптов, чтобы упростить этот процесс. Вы можете найти репозиторий для этих скриптов ниже:
https://github.com/zafergurel/nginx-cache-cleaner
Идея проста. Создать индекс кэша (с ключами кэша и соответствующими файлами кэша) и выполнить поиск в этом файле индекса. Это действительно помогло нам ускорить поиск элементов (с минут до секунды) и соответственно удалить их.
источник
В моем случае,
touch
этот файл Css делает его похожим на измененные ресурсы (фактическиtouch
ничего не делает с файлом, кроме изменения времени последнего изменения), поэтому браузер и nginx будут применять последние ресурсыисточник
Я столкнулся с подобной проблемой:
Настройка системы и проблема: (В виртуальной коробке я использую ubuntu и nginx для веб-хостинга - обновления веб-страниц PHP не отражают изменения во внешнем CSS-файле). Я занимаюсь разработкой веб-сайта на машине с Windows и передаю файлы в nginx через общую папку. Кажется, что nginx не воспринимает изменения в css-файле (обновление каким-либо образом не помогает. Изменение имени css-файла - единственное, что сработало)
Решение: На ВМ найдите общий файл (в моем случае файл css). Откройте с помощью nano и сравните с файлом в Windows Share (они выглядят одинаково). На ВМ сохраните общий файл с помощью nano. Все изменения теперь отражены в браузере. Не уверен, почему это работает, но в моем случае.
ОБНОВЛЕНИЕ: после перезагрузки сервера VM проблема вернулась. Следуя инструкциям в разделе Решение, CSS снова стал реагировать на обновления.
источник
В моем случае это был включенный opcache в /etc/php/7.2/fpm/php.ini (Ubuntu):
Если установить значение 0, сервер загрузит последнюю версию файлов (php).
источник