Задать вопрос

Отключение кэширование в Nginx

Есть проблема — nginx намертво кэширует статику. В результате обновление js/css на сайте не появляются. В конфиге явно кэширование не указано:

user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
# log options
log_format main '$host: $remote_addr — $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"';
# nginx options
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65 20;
# fastcgi
#fastcgi_intercept_errors on;
server {
listen 80;
rewrite ^/article/(.+)$ /?call=article.title&title=$1 break;
location / {
proxy_pass 127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
# Static files location

location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf)$
{

if (!-d /home/webmaster/sites/$host ) {
set $cur_host «cms1»;
access_log '/var/log/nginx/default.log' main;
}

if (-d /home/webmaster/sites/$host ) {
set $cur_host $host;
access_log '/var/log/nginx/host_access.log' main;
}

root /home/webmaster/sites/$cur_host;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
}
  • Вопрос задан
  • 15662 просмотра
Подписаться 5 Простой 7 комментариев
Решения вопроса 1
VBart
@VBart
Проблема скорее всего в VirtualBox. Вы уже не первый, кто жалуется на такие странности с ним.
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
@DenisO Автор вопроса
Проблема действительно где-то между VirtualBox'ом и nginx'ом. Кто виноват не знаю, но смена у виртуальной машины типа контроллера с SATA на IDE помогла решить проблему.
Ответ написан
Так а причем nginx? Сбросьте кеш у браузера. Запросы на сервер смотрели? firebug — например.
Ответ написан
@DenisO Автор вопроса
forums.virtualbox.org/viewtopic.php?f=3&t=33201
fyi: i had the same problem with nginx. it has the same solution, check 'SendFile' in the nginx docs
Ответ написан
Комментировать
@cadmi
Включите debug log и посмотрите, что происходит.
Но вообще конфиг, конечно… Ужас и адЪ, мягко говоря.
Ответ написан
alexxxst
@alexxxst
kill -HUP сделайте nginx-основному процессу, если поможет — значит надо ковырять конфиг, например open_file_cache и т.д. А вообще, как уже писали — виноват браузер или прокси.
Ответ написан
Комментировать
@DenisO Автор вопроса
1. отправка HUP — ведь только перезагружает конфиг? Я делал многократно /etc/init.d/nginx restart, что в этом контексте аналогично

2. wget host/thisfile.js возвращает тоже закешированный js. Это показывает что дело не в браузере и не в проксе (ее просто нет)
Ответ написан
Комментировать
@iddqd3
location ~* \.(?:css|js|txt)$ {
add_header Cache-Control "no-store";
}

Должно помочь
Ответ написан
Комментировать
parmactep
@parmactep
Сорян за некропостинг, но вероятно буду сам впоследствии искать ответ на вопрос.
В настройках контроллера SATA VirtualBox есть галочка "Кеширование ввода/вывода". Вот она и решила проблему.
Ответ написан
Комментировать
@f4llou7
добавьте в конфиг nginx

sendfile off;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы