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; - логи доступа к файлам
michaek: runseoman, если прочитать и настроить самостоятельно не получается, всегда можно попросить кого-то настроить за деньги, затем изучить конфиг и понять, что же поменялось
посмотрите на раздел, написано "Технические вопросы > Администрирование серверов"
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 ----------
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)) {
access_log /var/log/nginx/badrequest.log;
return 444;
}
if ($request_method = POST ) {
set $badref 1;
}
if ($http_referer !~ ^(http://site.com.*|https://site.com.*)) {
set $badref "1${badref}";
}
if ($badref = 11) {
access_log /var/log/nginx/badrequest.log;
return 444;
}
}
location @fetch {
access_log off;
internal; - fetch используется только для внутренний запросов, тоесть только внутри nginx ? а надо ли это обязательно указывать ?
proxy_pass http://ip:80; если нет картинки в кеше, запрос с бэкенда
proxy_set_header Host $host;
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 "";
}
access_log /var/log/nginx/site.com/dynamic.access.log;
include /etc/nginx/global.conf;
include /root/lowprotect/var/domain/site.com/nginx/filter.conf;
runseoman, если прочитать и настроить самостоятельно не получается, всегда можно попросить кого-то настроить за деньги, затем изучить конфиг и понять, что же поменялось
посмотрите на раздел, написано "Технические вопросы > Администрирование серверов"
вопросы
у меня вопрос
я задал
прошу ответа/совета, пробую сделать сам и тд
это форум, а не служба поддержки
в этом разделе народ общается/делиться
если бы я хотел чтоб мне все сделали и не вникать особо в суть я бы обратился в Работа и услуги для вебмастера -> Администрирование серверов и сайтов
то есть надо взять /ru/forum/comment/11521074
и переделать:
вот что вышло
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)$ {
root /var/www/t;
open_file_cache_errors off;
error_page 404 = @fetch;
}
location @fetch {
internal;
proxy_cache all;
proxy_pass http://192.168.0.2:8080$uri;
proxy_store on;
proxy_temp_path /var/www/t/temp;
root /var/www/t;
}
}
---------- Добавлено 09.03.2013 в 13:46 ----------
вот сделал
текст конфига
server {
listen 80;
server_name t.ru www.t.ru;
error_page 404 = @nocached;
location ~* .+\.(jpg|jpeg|gif|gz|zip|flv|rar|wmv|avi|css|swf|png|htc|ico|mpeg|mpg|txt|mp3|mov|js)$ {
expires 1y;
error_page 404 = @fetch;
}
location @fetch {
proxy_pass http://192.168.0.2:8080;
proxy_store on;
proxy_temp_path /var/www/t;
proxy_set_header Host $host;
proxy_set_header If-Modified-Since "";
}
location @nocached {
proxy_pass http://192.168.0.2:8080;
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 / {
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;
}
}
только вот непонятно следующее
1) работает ли кеширование, как это проверить (хотя грузиться стало быстрее)
2) почему файло, которое кешируется, скидывается не в /var/www/t (как указано в конфиге) , а в /usr/local/nginx/html/ 😕
в конфигах я нигде не нашел /usr/local/nginx/html/
что значит напрямую?
на сервере с apache картинки отдаются скриптом (ресайзятся с 5Mpx до 200*150 и с 5Mpx до 1024*765)
отресайзеные картинки не хранятся
поэтому и хочу чтоб nginx сохранял у себя то что отдается пользователю и переодически обновлял
это я уже пробовал
ругается на эту строку
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 отдаст его уже из своего кеша не дергая при этом бэкенд
ну так подскажите что добавить/убрать/изменить
я же прошу помочь, а не обучать
если бы я увидел как правильно, я бы хоть разобрался бы что к чему и тогда дальше крутил
вот полный конфиг вирт хоста
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 ----------
Если я правильно понял, то автор пытается кэшировать не картинки, а результат работы скрипта. Если так, то задача изначально неверна.
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 - через некоторое время появилось куча числовых каталогов, но файлов нет
а что должно быть не пусто? я вам выше написал что нужно крутить что бы бэкенд забирал статику и ложил ее к себе локально сам.
вот как раз и надо чтоб он ложил ее к себе локально, и давал уже отресайзеные картинки