nginx и кеширование

123 4
Andreyka
На сайте с 19.02.2005
Offline
822
#11

Читайте внимательно документацию

Не стоит плодить сущности без необходимости
R
На сайте с 22.12.2009
Offline
94
#12

читал, просмотрел кучу примеров

результат что-то не айс

подскажите как решить траблу

B
На сайте с 07.12.2009
Offline
42
#13

Вам три раза скинули ссылку на документацию, вы ее прочитали?

синтаксис: proxy_store on | off | строка;
умолчание:
proxy_store off;
контекст: http, server, location
Разрешает сохранение на диск файлов. Параметр on сохраняет файлы в соответствии с путями, указанными в директивах alias или root. Параметр off запрещает сохранение файлов. Кроме того, имя файла можно задать явно с помощью строки с переменными:

proxy_store /data/www$original_uri;
Время изменения файлов выставляется согласно полученному полю “Last-Modified” в заголовке ответа. Ответ сначала записывается во временный файл, а потом этот файл переименовывается. Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа могут располагаться на разных файловых системах, но нужно учитывать, что в этом случае вместо дешёвой операции переименовывания в пределах одной файловой системы файл копируется с одной файловой системы на другую. Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой системе, что и каталог с временными файлами, задаваемый директивой proxy_temp_path для данного location.

Директиву можно использовать для создания локальных копий статических неизменяемых файлов, например, так:

location /images/ {
root /data/www;
open_file_cache_errors off;
error_page 404 = /fetch$uri;
}

location /fetch/ {
internal;

proxy_pass http://backend/;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/temp;

alias /data/www/;
}
или так:

location /images/ {
root /data/www;
error_page 404 = @fetch;
}

location @fetch {
internal;

proxy_pass http://backend;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /data/temp;

root /data/www;
}
синтаксис: proxy_store_access пользователи:права ...;
умолчание:
proxy_store_access user:rw;
контекст: http, server, location
Задаёт права доступа для создаваемых файлов и каталогов, например,

proxy_store_access user:rw group:rw all:r;
Если заданы какие-либо права для group или all, то права для user указывать необязательно:

proxy_store_access group:rw all:r;
Оптимизайка
На сайте с 11.03.2012
Offline
396
#14

Ну так у вас ничего не проксируется же. proxy_pass где? Смысл кешировать статический контент, когда nginx раздает его напрямую?

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
K0
На сайте с 16.05.2012
Offline
108
#15

Если я правильно понял, то автор пытается кэшировать не картинки, а результат работы скрипта. Если так, то задача изначально неверна.

R
На сайте с 22.12.2009
Offline
94
#16

вот полный конфиг вирт хоста

proxy_cache_path /var/www/t/ keys_zone=all:300m max_size=1G;
proxy_ignore_headers X-Accel-Redirect;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
proxy_store on;


server {
listen 80;
server_name t.ru;

location / {
proxy_pass http://192.168.0.2:8080/;
index index.php
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}


location ~* .+\.(jpg|jpeg|gif|css|js)$ {
proxy_cache all;
proxy_cache_valid 404 502 503 1m;
proxy_cache_valid any 1h;
}
}

-----------------------------------

location /

тут все ок, сайт же работает

location ~* .+\.(jpg|jpeg|gif|css|js)$

тут как я понял должны кешироваться картинки в all пути/настройки к которому прописаны в начале

---------- Добавлено 08.03.2013 в 16:32 ----------

kreat0r:
Если я правильно понял, то автор пытается кэшировать не картинки, а результат работы скрипта. Если так, то задача изначально неверна.

nginx должен кешировать картинки которые отдает apache

nginx и apache на разных физических серверах

Den73
На сайте с 26.06.2010
Offline
523
#17

откуда там возьмется статика, у вас вообще нету настройки проксирования в локейшене для статики.

R
На сайте с 22.12.2009
Offline
94
#18

ну так подскажите что добавить/убрать/изменить

я же прошу помочь, а не обучать

если бы я увидел как правильно, я бы хоть разобрался бы что к чему и тогда дальше крутил

P
На сайте с 16.03.2009
Offline
144
#19
runseoman:
ну так подскажите что добавить/убрать/изменить
я же прошу помочь, а не обучать
если бы я увидел как правильно, я бы хоть разобрался бы что к чему и тогда дальше крутил

Вам уже ответили. В location добавьте

location ~* .+\.(jpg|jpeg|gif|css|js)$ {
proxy_pass http://backend;
...
R
На сайте с 22.12.2009
Offline
94
#20

это я уже пробовал

ругается на эту строку

Restarting nginx: [emerg]: "proxy_pass" may not have URI part in location given by regular expression, or inside named location, or inside the "if" statement, or inside the "limit_except" block in /etc/nginx/sites-enabled/t.ru:22
configuration file /etc/nginx/nginx.conf test failed



---------- Добавлено 08.03.2013 в 19:53 ----------

как я понял надо

location ~* .+\.(jpg|jpeg|gif|css|js)$ {

proxy_pass http://backend/...........;

где ....... - регулярное выражение

proxy_pass http://backend/~* .+\.(jpg|jpeg|gif|css|js); - не подходит

---------- Добавлено 08.03.2013 в 20:28 ----------

------------------------------------------------------------------------------------------

может я что-то не так объясняю

попробую еще раз

1) запрос от посетителя сайта на файл (jpg/png/css/js/gif)

2) nginx смотрит у себя в кеше

3.1) если файл найден то отдать пользователю

3.2) если файл не найдет то скачать с бэкенда себе(в кеш nginx и хранить например 1 сутки) и отдать пользователю

то есть если второй пользователь запросит этот же файл в течении суток, то nginx отдаст его уже из своего кеша не дергая при этом бэкенд

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий