Рецепт конфигурации nginx для UMI.CMS с использованием статического кэша

Материал из DiPHOST.Ru wiki system

(Различия между версиями)
Перейти к: навигация, поиск
 
(28 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
<source lang="yaiff">
+
<meta name="keywords" content="umi, umi.cms, cms, nginx, cache, кэширование, кэш"></meta>
 +
<meta name="description" content="Конфигурация nginx для UMI.CMS с кэшированием"></meta>
 +
<meta name="title" content="Рецепт конфигурации nginx для UMI.CMS с использованием статического кэша"></meta>
-
        server {
+
==== Рецепт nginx "UMI.CMS кэш nginx" ====
-
                 include listen.conf;
+
[[Cookbook_nginx|Коллекция рецептов nginx нашего хостинга]]
-
                include crawler.conf;
+
 
-
                 proxy_buffer_size       %%hsize%%k;
+
[[UMI.CMS]] способна создавать статическую копию сайта: [http://wiki.umisoft.ru/%D0%9A%D1%8D%D1%88%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_nginx кэширование через nginx]. Это позволяет в 10-ки раз ускорить работу сайтов. Предполагается, что config.ini UMI.CMS имеет такие строки:
-
                 client_max_body_size   %%usize%%m;
+
:<nowiki>[includes]</nowiki>
 +
:static.system-cache = /home/{{hl|ваш_логин}}/www/site<N>/public_html/sys-temp/static-cache
 +
:
 +
:<nowiki>[cache]</nowiki>
 +
:static.enabled = "1"
 +
:static.mode = "nginx"
 +
 
 +
Так выглядит конфигурация nginx сайта для [[Hosting-UMI|хостинга]]:
 +
<pre>
 +
      # конфигурация nginx для гипотетического пользователя хостинга username для сайта номер "один"
 +
      # конфигурация обеспечивает работу со специальным кэшированием UMI.CMS
 +
      # http://wiki.umisoft.ru/кэширование_через_nginx
 +
      #
 +
      # параметр listen и proxy_pass генерируется нашей системой автоматически по внутренним параметрам
 +
      server {
 +
                 listen 192.168.0.1:80;               # IP-адрес сервера
 +
                 proxy_buffer_size         8k;       # параметр изменяется в панели управления
 +
                 client_max_body_size   16m;   # параметр изменяется в панели управления
                 client_body_buffer_size 512k;
                 client_body_buffer_size 512k;
-
                 open_file_cache          max=1000 inactive=20s;
+
                # кэш имён файлов для disable_symlinks
 +
                 open_file_cache          max=1000 inactive=20s;  
                 open_file_cache_valid    30s;
                 open_file_cache_valid    30s;
                 open_file_cache_min_uses 2;
                 open_file_cache_min_uses 2;
                 open_file_cache_errors  on;
                 open_file_cache_errors  on;
-
%%hosts%%
+
                # имена сайта
 +
                server_name example.com;
 +
                server_name www.example.com
 +
                # отключение лишних журналов
                 access_log  off;
                 access_log  off;
-
                 root %%sitedir%%/public_html;
+
                 log_not_found off;
 +
                # корневая папка для статических файлов
 +
                root /home/username/www/site1/public_html;
 +
                index index.html;
 +
 +
                # запрет символьных ссылок на "чужие" файлы
 +
                # если файл находится внутри папки /home/username/www/site1/public_html ,
 +
                # то эту часть не проверять по соображением производительности
 +
                disable_symlinks if_not_owner from=/home/username/www/site1/public_html;
 +
 +
                # обработать запрос, не соответствующий уточнениям ниже
                 location / {
                 location / {
-
                         access_log %%sitedir%%/logs/nginx-access.log;
+
                         access_log /home/username/www/site1/logs/nginx-access.log;
-
                         disable_symlinks if_not_owner from=%%sitedir%%/public_html;
+
                         # кодировка прописана во избежании ситуаций, когда отдаваемые nginx файлы .html интерпретируется
 +
                        # браузером в соответствии с его настройкой
                         charset utf-8;
                         charset utf-8;
                         source_charset utf-8;
                         source_charset utf-8;
 +
                        # не смотреть в кэше, если метод запроса POST или есть аргументы, или пользователь залогинен
                         error_page 412 = @apache;
                         error_page 412 = @apache;
                         if ($request_method = 'POST') { return 412; }
                         if ($request_method = 'POST') { return 412; }
                         if ($is_args = '?') { return 412; }
                         if ($is_args = '?') { return 412; }
                         if ($cookie_umicms_session) { return 412; }
                         if ($cookie_umicms_session) { return 412; }
-
                         root %%sitedir%%/public_html/sys-temp/static-cache/$host/;
+
                        # переопределить корень сайта на папку статического кэша
 +
                        # попытаться воспользоваться им
 +
                         root /home/username/www/site1/public_html/sys-temp/static-cache/$host/;
                         try_files $uri/index.html @apache;
                         try_files $uri/index.html @apache;
                 }
                 }
 +
                # запретить доступ к файлам репозиториев, если они случайно оказались в публичном месте
                 location ~ /\.svn {
                 location ~ /\.svn {
                         deny all;
                         deny all;
-
                        log_not_found off;
 
-
                        access_log off;
 
                 }
                 }
-
 
                 location ~ /\.git {
                 location ~ /\.git {
                         deny all;
                         deny all;
-
                        log_not_found off;
+
                }
-
                         access_log off;
+
                location ~ /\.hg {
 +
                         deny all;
                 }
                 }
 +
                # запретить доступ к файлам .htaccess и .htpasswd
                 location ~ /\.ht {
                 location ~ /\.ht {
                         deny all;
                         deny all;
-
                        log_not_found off;
 
-
                        access_log off;
 
                 }
                 }
 +
                # обрабатывать запросы к админке веб-сервером apache
                 location ~* ^/admin {
                 location ~* ^/admin {
                       error_page 412 = @apache;
                       error_page 412 = @apache;
                       return 412;
                       return 412;
                 }
                 }
 +
 +
                # обрабатывать php-файлы веб-сервером apache
                 location ~* \.php$ {
                 location ~* \.php$ {
                       error_page 412 = @apache;
                       error_page 412 = @apache;
                       return 412;
                       return 412;
                 }
                 }
-
                  
+
 
-
                 location ~* \.(swf|zip|rar|arj|cab|exe|dll|ico|jpg|jpeg|gif|bmp|png|mp3|avi|mov|mpg|mpeg|amr|mmf|wml|wbmp|mid|midi|3gp|css|js|html|htm|txt)$
+
                 # попытаться отдать файл с одним из расширений напрямую минуя apache
-
{
+
                 location ~* \.(swf|zip|rar|arj|cab|exe|dll|ico|jpg|jpeg|gif|bmp|png|mp3|avi|mov|mpg|mpeg|amr|mmf|wml|wbmp|mid|midi|3gp|css|js|html|htm|txt)$ {
-
                         access_log %%sitedir%%/logs/nginx-access.log;
+
                         access_log /home/username/www/site1/logs/nginx-access.log;
-
                        disable_symlinks if_not_owner from=%%sitedir%%/public_html;
+
                         charset utf-8;
                         charset utf-8;
                         source_charset utf-8;
                         source_charset utf-8;
Строка 67: Строка 104:
                 }
                 }
 +
                # передать запрос к apache
                 location @apache {
                 location @apache {
-
                         proxy_pass  http://127.0.0.1:%%port%%;
+
                         proxy_pass  <nowiki>http://127.0.0.1:11111</nowiki>;
-
                 }
+
                 }              
-
               
+
-
        }     
+
-
 
+
-
</source>
+
        }
 +
</pre>

Текущая версия на 12:23, 1 августа 2012

Рецепт nginx "UMI.CMS кэш nginx"

Коллекция рецептов nginx нашего хостинга

UMI.CMS способна создавать статическую копию сайта: кэширование через nginx. Это позволяет в 10-ки раз ускорить работу сайтов. Предполагается, что config.ini UMI.CMS имеет такие строки:

[includes]
static.system-cache = /home/ваш_логин/www/site<N>/public_html/sys-temp/static-cache
[cache]
static.enabled = "1"
static.mode = "nginx"

Так выглядит конфигурация nginx сайта для хостинга:

       # конфигурация nginx для гипотетического пользователя хостинга username для сайта номер "один"
       # конфигурация обеспечивает работу со специальным кэшированием UMI.CMS
       # http://wiki.umisoft.ru/кэширование_через_nginx
       #
       # параметр listen и proxy_pass генерируется нашей системой автоматически по внутренним параметрам
       server {
                listen 192.168.0.1:80;               # IP-адрес сервера
                proxy_buffer_size         8k;       # параметр изменяется в панели управления
                client_max_body_size   16m;    # параметр изменяется в панели управления
                client_body_buffer_size 512k;

                # кэш имён файлов для disable_symlinks
                open_file_cache          max=1000 inactive=20s; 
                open_file_cache_valid    30s;
                open_file_cache_min_uses 2;
                open_file_cache_errors   on;

                # имена сайта
                server_name example.com;
                server_name www.example.com

                # отключение лишних журналов
                access_log  off;
                log_not_found off;

                # корневая папка для статических файлов
                root /home/username/www/site1/public_html;
                index index.html;

                # запрет символьных ссылок на "чужие" файлы
                # если файл находится внутри папки /home/username/www/site1/public_html , 
                # то эту часть не проверять по соображением производительности
                disable_symlinks if_not_owner from=/home/username/www/site1/public_html;

                # обработать запрос, не соответствующий уточнениям ниже
                location / {
                        access_log /home/username/www/site1/logs/nginx-access.log;
                        # кодировка прописана во избежании ситуаций, когда отдаваемые nginx файлы .html интерпретируется 
                        # браузером в соответствии с его настройкой
                        charset utf-8;
                        source_charset utf-8;
                        # не смотреть в кэше, если метод запроса POST или есть аргументы, или пользователь залогинен
                        error_page 412 = @apache;
                        if ($request_method = 'POST') { return 412; }
                        if ($is_args = '?') { return 412; }
                        if ($cookie_umicms_session) { return 412; }
                        # переопределить корень сайта на папку статического кэша 
                        # попытаться воспользоваться им
                        root /home/username/www/site1/public_html/sys-temp/static-cache/$host/;
                        try_files $uri/index.html @apache;
                }

                # запретить доступ к файлам репозиториев, если они случайно оказались в публичном месте
                location ~ /\.svn {
                        deny all;
                }
                location ~ /\.git {
                        deny all;
                }
                location ~ /\.hg {
                        deny all;
                }

                # запретить доступ к файлам .htaccess и .htpasswd
                location ~ /\.ht {
                        deny all;
                }

                # обрабатывать запросы к админке веб-сервером apache
                location ~* ^/admin {
                       error_page 412 = @apache;
                       return 412;
                }

                # обрабатывать php-файлы веб-сервером apache
                location ~* \.php$ {
                       error_page 412 = @apache;
                       return 412;
                }

                # попытаться отдать файл с одним из расширений напрямую минуя apache
                location ~* \.(swf|zip|rar|arj|cab|exe|dll|ico|jpg|jpeg|gif|bmp|png|mp3|avi|mov|mpg|mpeg|amr|mmf|wml|wbmp|mid|midi|3gp|css|js|html|htm|txt)$ {
                        access_log /home/username/www/site1/logs/nginx-access.log;
                        charset utf-8;
                        source_charset utf-8;
                        try_files $uri @apache;
                }

                # передать запрос к apache
                location @apache {
                        proxy_pass  http://127.0.0.1:11111;
                }                

        }
Личные инструменты
© 2006 — ООО «Дремучий лес»
Служба техподдержки: support@diphost.ru
Тексты этого сайта являются полностью оригинальными
или оригинальными компиляциями ООО «Дремучий Лес».
Распространяются по лицензии WTFPL
Отзывы о хостинге diphost.ru Отзывы на hostobzor.ru