server {
server_name site.com www.site.com;
listen ip;
set $badref 0;
location ~* ^.+\.(jpg|jpeg|gif|png|ico|js|css|mp3|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
lowprotect off; - не понял что это, в инете не нашел
limit_req zone=img burst=150 nodelay; тут как я понял не более 150 запросов в секунду для зоны img, только в вашем примере вы не показываете как задается зона limit_req_zone, хотя в доке по nginx читал, но так и не понял что такое зона и ключ и накой они нужны
expires 3d; сохраняем на 3 дня
root /var/www/site.com; тут прописывает куда кешиться файло
error_page 404 = @fetch; как я понял если нет файла (404) обращаемся к блоку location @fetch
access_log /var/log/nginx/site.com/static.access.log; - логи доступа к файлам
valid_referers none blocked server_names ~(yandex|google|vk|twitter);
if ($invalid_referer) {
access_log /var/log/nginx/badrequest.log;
return 444;
}
location / {
lowprotect off;
limit_req zone=php burst=4 nodelay;
limit_req zone=1min burst=30 nodelay;
limit_req zone=3min burst=60 nodelay;
proxy_pass http://ip:80; тут как я понял файлы которые не описаны в location ~* ^.+\.(jpg|jpeg|gif|... берутся с сервака напрямую и не кешируются
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_redirect off; - это не понял зачем тут
access_log /var/log/nginx/site.com/dynamic.access.log;
if ($http_referer !~ ^($|http|https)) {
if ($request_method = POST ) {
set $badref 1;
if ($http_referer !~ ^(http://site.com.*|https://site.com.*)) {
set $badref "1${badref}";
if ($badref = 11) {
location @fetch {
access_log off;
internal; - fetch используется только для внутренний запросов, тоесть только внутри nginx ? а надо ли это обязательно указывать ?
proxy_pass http://ip:80; если нет картинки в кеше, запрос с бэкенда
proxy_redirect off;
proxy_store on; как бы включить режим кеширования(сохранения файлов: картинки/js/css в кеш)
proxy_store_access user:rw group:rw all:r; а не нельзя просто указать права 777 на каталог указанный в root ?
proxy_temp_path /var/www/temp; - этот каталог почему то всегда пуст, зачем он нужен ?
root /var/www/site.com; каталог куда будет кешироваться/сохранятся файло
proxy_set_header If-Modified-Since "";
include /etc/nginx/global.conf;
include /root/lowprotect/var/domain/site.com/nginx/filter.conf;
посмотрите на раздел, написано "Технические вопросы > Администрирование серверов"
вопросы
у меня вопрос
я задал
прошу ответа/совета, пробую сделать сам и тд
это форум, а не служба поддержки
в этом разделе народ общается/делиться
если бы я хотел чтоб мне все сделали и не вникать особо в суть я бы обратился в Работа и услуги для вебмастера -> Администрирование серверов и сайтов
то есть надо взять /ru/forum/comment/11521074
и переделать:
вот что вышло
---------- Добавлено 09.03.2013 в 13:46 ----------вот сделал
текст конфига
только вот непонятно следующее
1) работает ли кеширование, как это проверить (хотя грузиться стало быстрее)
2) почему файло, которое кешируется, скидывается не в /var/www/t (как указано в конфиге) , а в /usr/local/nginx/html/ 😕
в конфигах я нигде не нашел /usr/local/nginx/html/
что значит напрямую?
на сервере с apache картинки отдаются скриптом (ресайзятся с 5Mpx до 200*150 и с 5Mpx до 1024*765)
отресайзеные картинки не хранятся
поэтому и хочу чтоб nginx сохранял у себя то что отдается пользователю и переодически обновлял
это я уже пробовал
ругается на эту строку
---------- Добавлено 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 отдаст его уже из своего кеша не дергая при этом бэкенд
ну так подскажите что добавить/убрать/изменить
я же прошу помочь, а не обучать
если бы я увидел как правильно, я бы хоть разобрался бы что к чему и тогда дальше крутил
вот полный конфиг вирт хоста
-----------------------------------
location /
тут все ок, сайт же работает
location ~* .+\.(jpg|jpeg|gif|css|js)$
тут как я понял должны кешироваться картинки в all пути/настройки к которому прописаны в начале---------- Добавлено 08.03.2013 в 16:32 ----------
nginx должен кешировать картинки которые отдает apache
nginx и apache на разных физических серверах
читал, просмотрел кучу примеров
результат что-то не айс
подскажите как решить траблу
в файле вирт хоста
перед server написал
proxy_cache_path /var/www/t/cache level=1:2 keys_zone=cache:30m max_size=1G;
proxy_temp_path /var/www/t/tempfiles/ 1 2;
в server вставил блок
location ~* ^.+\.(jpg|jpeg|gif|css|js)$ {
proxy_cache cache;
proxy_cache_valid 10m;
в результате создался путь /var/www/t/cache и /var/www/t/tempfiles/
в cache - пусто
в tempfiles - через некоторое время появилось куча числовых каталогов, но файлов нет
вот как раз и надо чтоб он ложил ее к себе локально, и давал уже отресайзеные картинки