Page 2 of 3

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Mon Mar 23, 2015 4:28 pm
by skurudo
illusion wrote:1)Насчет кэширование в браузере nginx их кэширует навсегда. То есть если мне нужно поменять файл то нужно создавать другой файл и в скриптах прописывать новое имя файла чтобы изменения вступили в силу. И при этом старые файлы, останутся в браузере?
Смотрите опцию expires - /home/YOUR-USER/conf/web/nginx.conf
По умолчанию - expires max - это почти навечно, на год если не ошибаюсь..
illusion wrote:Но это может привести к переполнению места отведенного для кэша одного сайта в браузерах.
И придется обновлять кэш полностью в браузере чтобы избавится от этих проблем?
А если изменения небольшие то с этим морока?
Не может, браузеры не совсем дурные кэшировать до упаду. Кэш чистится самостоятельно, т.к. место ограничено каким-то процентом от жесткого диска.
illusion wrote:2) В http://10serv.com/nastroyka-nginx-dlya- ... amyat-ram/
описано для кэширования на другом сервере или на одном сервере?
На одном сервере - кэширование в память. Это популярный трюк.
Грубо говоря, nginx кэширует также на диск, но этот диск реально располагается в оперативной памяти.

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Tue Mar 24, 2015 9:24 am
by illusion
А что означает:
proxy_cache_path /var/cache/nginx/ram keys_zone=ram:100m inactive=3d max_size=1G;

и


proxy_cache_valid 200 1d;

....

proxy_pass http://backend;

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Tue Mar 24, 2015 1:39 pm
by skurudo
Немного сэкономлю время и не буду заниматься копипастой, посмотрите документацию:
http://nginx.org/ru/docs/http/ngx_http_ ... odule.html

Я не просто так ее рекомендую, опции очень подробно описаны, есть примеры. Уверен, что она сможет гораздо лучше объяснить :)

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Tue Mar 24, 2015 3:45 pm
by illusion
skurudo, большое спасибо.

А nginx воспринимает то что кэшировать на стороне клиента( в браузере) и на стороне сервера через одну и туже директиву location?

Мне нужно закэшировать только рисунки суммарным размером около 9 мбайт и 1 или несколько html файлов на сервре в RAM и эти же рисунки на стороне клиента

Боюсь испортить все из-за незнания.
У меня в /etc/nginx/nginx.conf

# Cache
proxy_cache_path /var/cache/nginx levels=2 keys_zone=cache:10m inactive=60m max_size=512m;
proxy_cache_key "$host$request_uri $cookie_user";
proxy_temp_path /var/cache/nginx/temp;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_valid any 3d;

map $http_cookie $no_cache {
default 0;
~SESS 1;
~wordpress_logged_in 1;
}

Мне нужно изменить только выделенное или тут все связано и не так просто?

И что мне указывать в proxy_pass ?

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Tue Mar 24, 2015 5:24 pm
by skurudo
Начнем с того, что шаблон с кэшированием всего уже есть.
Проще наверное использовать его и по аналогии подогнать под себя уже настройки кэша по домену.

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Tue Mar 24, 2015 6:04 pm
by illusion
Если бы я еще представлял что это значит :(
вот тут /home/admin/conf/web/nginx.conf

Code: Select all

server {
    listen     xxx.xx.xx.xx:80;
    server_name funprograms.ru www.funprograms.ru;
    error_log  /var/log/apache2/domains/funprograms.ru.error.log error;

    location / {
        proxy_pass      http://  xxx.xx.xx.xx:8080;
        location ~* ^.+\.(jpg)$ {
            root           /home/admin/web/funprograms.ru/public_html;
            access_log     /var/log/apache2/domains/funprograms.ru.log combined;
            access_log     /var/log/apache2/domains/funprograms.ru.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
        }
    }

    location /error/ {
        alias   /home/admin/web/funprograms.ru/document_errors/;
    }

    location @fallback {
        proxy_pass      http://  xxx.xx.xx.xx:8080;
    }

    location ~ /\.ht    {return 404;}
    location ~ /\.svn/  {return 404;}
    location ~ /\.git/  {return 404;}
    location ~ /\.hg/   {return 404;}
    location ~ /\.bzr/  {return 404;}

    include /home/admin/conf/web/nginx.funprograms.ru.conf*;
}
Мне нужно добавить еще location? или изменить какой то существующий?

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Wed Mar 25, 2015 4:16 pm
by skurudo
Проще изменить существующий.

Code: Select all

      location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|tif|tiff)$ {
        proxy_cache cache;
        proxy_cache_valid 15m;
        proxy_cache_valid 404 1m;
        proxy_no_cache $no_cache;
        proxy_cache_bypass $no_cache;
        proxy_cache_bypass $cookie_session $http_x_update;

            root           /home/admin/web/funprograms.ru/public_html;
            access_log     /var/log/apache2/domains/funprograms.ru.log combined;
            access_log     /var/log/apache2/domains/funprograms.ru.bytes bytes;
            expires        max;
            try_files      $uri @fallback;
НЕ ПРОТЕСТИРОВАНО, чисто умозрительная выкладка.

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Wed Mar 25, 2015 4:53 pm
by illusion
М.... а возможно просто сделать в рабочей директории сайта т.е в
home/admin/web/funprograms.ru/public_html
создать ram диск размером 10-20 мбайт, например с названием ram_img
А в скрипте прописать путь к картинкам как :
ram_img/*.jpg
Залить туда картинки, а при старте-перезагрузке системы копировать в него с SSD( HDD)

Можно ли так?

Если можно, то я только себе нагородил колес.

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Wed Mar 25, 2015 4:55 pm
by skurudo
Как вариант, можно сделать и так, главное, чтобы под тем пользователем был доступ к этим самым картинкам.

Re: Nginx при default шаблоне дает браузерам команду кэширов

Posted: Thu Mar 26, 2015 4:25 pm
by illusion
То есть, если я под root зайду на сервер, создам ram диск в
home/admin/web/funprograms.ru/public_html/ram_img
а в vestacp под пользователем admin буду работать и под ним доменное имя сайта прикреплено.
Скрипты php расположенные в home/admin/web/funprograms.ru/public_html и в
home/admin/web/funprograms.ru/public_html/xxx смогут загружать эти картинки по жесткому пути вида
home/admin/web/funprograms.ru/public_html/ram_img/img1.jpg?