- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Эти файлы можно напрямую с диска давать
что значит напрямую?
на сервере с apache картинки отдаются скриптом (ресайзятся с 5Mpx до 200*150 и с 5Mpx до 1024*765)
отресайзеные картинки не хранятся
поэтому и хочу чтоб nginx сохранял у себя то что отдается пользователю и переодически обновлял
Тога настройте proxy_cache для картинок по примеру документации
то есть надо взять /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/
runseoman, если прочитать и настроить самостоятельно не получается, всегда можно попросить кого-то настроить за деньги, затем изучить конфиг и понять, что же поменялось
runseoman, если прочитать и настроить самостоятельно не получается, всегда можно попросить кого-то настроить за деньги, затем изучить конфиг и понять, что же поменялось
посмотрите на раздел, написано "Технические вопросы > Администрирование серверов"
вопросы
у меня вопрос
я задал
прошу ответа/совета, пробую сделать сам и тд
это форум, а не служба поддержки
в этом разделе народ общается/делиться
если бы я хотел чтоб мне все сделали и не вникать особо в суть я бы обратился в Работа и услуги для вебмастера -> Администрирование серверов и сайтов
proxy_cache_path /var/www/t levels= keys_zone=all:300m;
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;
}
}
и как это должно работать, ужас какой то, вы просто не понимаете что делаете, берете из примеров конструкции и вписываете себе.
---------- Добавлено 09.03.2013 в 23:30 ----------
с proxy_store смотрите пример
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;
proxy_store это не кэширование.
смотрим документацию
"Разрешает сохранение на диск файлов. Параметр on сохраняет файлы в соответствии с путями, указанными в директивах alias или root. "
перевожу, в моем примере при запросе документа, url которого попадает под регулярку (тоесть статика)
jpg|jpeg|gif|png|ico|js|css|mp3|mpe?g|avi|zip|gz|bz2?|rar|swf
происходит попытка взятия файла локально (на фронтенде) из директории
/var/www/site.com
если он есть то отдается клиенту, если его нету то срабатывает обработка ошибки 404
error_page 404 = @fetch;
работает локейшен location @fetch
proxy_pass идем на бэкенд за файлом и отдаем его клиенту.
proxy_store on; разрешаем сохранить этот файл к себе локально с такими же путями, тоесть мы с ходили за файлом на бэкенд и ложим теперь его к себе локально в /var/www/site.com
вот и все.
при последующем запросе этот файл уже напрямую будет отдаваться с фронтенда из папки /var/www/site.com т.к он туда закачался функционалом proxy_store и на бэкенд уже не ходим.
http://nginx.org/ru/docs/http/ngx_http_proxy_module.html#proxy_store
Для кэширования используется proxy_cache а не proxy_store.
если вам нужно просто автоматически ложить статику на фронтенд с бэкенда то пойдет proxy_store
если нужно именно кэширование то proxy_cache
надеюсь понятно объяснил.
"root /var/www/site.com; тут прописывает куда кешиться файло"
это откуда брать файл а не куда кэшировать, нету тут кэширования.
посмотрите на раздел, написано "Технические вопросы > Администрирование серверов"
вопросы
у меня вопрос
я задал
прошу ответа/совета, пробую сделать сам и тд
это форум, а не служба поддержки
в этом разделе народ общается/делиться
если бы я хотел чтоб мне все сделали и не вникать особо в суть я бы обратился в Работа и услуги для вебмастера -> Администрирование серверов и сайтов
и что? тут уже не один пост про то, в какую сторону смотреть, но что-то все никак. или нужен готовый конфиг бесплатно?