Решено: Кеширование средствами nginx

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

JwsD
Сообщения: 129
ОС: ArchLinux

Решено: Кеширование средствами nginx

Сообщение JwsD »

Доброго времени суток. Необходимо сделать кеширование в Nginx 0.8.31. Все сделал по докам с офф сайта
Кусок конфига:

Код: Выделить всё

user  nginx;
worker_processes  2;
worker_rlimit_nofile 100000;
error_log   /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
events {
    worker_connections  256;
    use epoll;
}
http {
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    keepalive_timeout  65;

###########?  PROXY $##########
client_max_body_size       16m;
client_body_buffer_size    128k;
proxy_connect_timeout       90;
proxy_send_timeout         90;
proxy_read_timeout         90;
proxy_buffer_size          4k;
proxy_buffers              4 32k;
proxy_busy_buffers_size    64k;
proxy_temp_file_write_size 10m;
############################## mb cacahed

proxy_cache_path /var/cache/nginx  levels=1:2   keys_zone=one:10m;

###############################


map_hash_bucket_size 512;    ## for user agent denied
 limit_req_zone $binary_remote_addr zone=two:10m  rate=1r/s;
    limit_zone cglob $binary_remote_addr 16m;


map  $http_user_agent   $forbidden {
   default   0;
   "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"                    1;
   "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"       1;
   "Opera/9.02 (Windows NT 5.1; U; ru)"                                                            1;

}


server {
                listen ip:80;
                server_name example.com
                rewrite ^(/manager/.*)$ https://$host$1 permanent;

                client_max_body_size       10m;
                client_body_buffer_size    128k;
                proxy_connect_timeout      90;
                proxy_send_timeout         90;
                proxy_read_timeout         90;
                proxy_buffer_size          4k;
                proxy_buffers              4 32k;


#               location = / {
#                       limit_req zone=two burst=2;
#                       if ($forbidden) {return 444;}
 #                       rewrite ^/$ /index-ddose.htm last;
#                       root   /root_dir
#                       index  ddos.htm;
 #               }


location / {
                        proxy_cache one;
                        proxy_cache_valid 5m;
                        limit_req   zone=two  burst=1;
                        limit_conn  cglob 2;

                        proxy_pass http://127.0.0.1:8080;
                        proxy_redirect http://127.0.0.1:8080/ /;
                        proxy_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header X-Real-IP $remote_addr;

}
}

Проблема в том что nginx не пишет ничего в proxy_cache_path /var/cache/nginx, даже с правами 777... В чем может быть проблема?
ЗЫ перепробовал много комбинаций, эта последняя... тоже не работает...
http://silverghost.org.ua/2009/12/07/437/ пробовал как тут, тоже не работает... мб он и кеширует, но никаких рекультатов не вижу:(
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: Решено: Кеширование средствами nginx

Сообщение neol »

Попробуйте proxy_temp_path указать, может полегчает.
В логах ничего не пишут?
Спасибо сказали:
JwsD
Сообщения: 129
ОС: ArchLinux

Re: Решено: Кеширование средствами nginx

Сообщение JwsD »

Код: Выделить всё

2009/12/30 11:14:50 [warn] 22434#0: *1410 an upstream response is buffered to a temporary file /var/cache/nginx/temp/0000000055 while reading upstream, client: 173.212.249.3, server: example.com, request: "GET /index.php HTTP/1.1", upstream: "http://ip:8080/index.php", host: "example.2.com", referrer: "http://host-tracker.com/web-site-uptime-monitor/3942236/"
2009/12/30 11:15:04 [notice] 15642#0: start cache manager process 29866
2009/12/30 11:15:04 [notice] 22439#0: http file cache: /var/cache/nginx 0.000M, bsize: 4096
2009/12/30 11:15:04 [notice] 15642#0: start cache loader process 29977
2009/12/30 11:15:04 [notice] 15642#0: cache manager process 22435 exited with code 0
2009/12/30 11:15:04 [notice] 15642#0: cache loader process 22439 exited with code 0

Вот чо ПИшет, я там конфиг поправил, выкладывать нужно?
Спасибо сказали:
JwsD
Сообщения: 129
ОС: ArchLinux

Re: Решено: Кеширование средствами nginx

Сообщение JwsD »

Сейчас удалось запустить кеширование, только доьбавлением

Код: Выделить всё

http{
...
proxy_cache one;
...
}

В http секцию. Кеширование - отличная штука, тока в данном случае он кеширует все виртуальные хосты. Мне нужно только один, как мне это сделать? прописывание proxy_cache off; во все 200 хостов не пойдет, и не тру вэй это.
может это баг?
Спасибо сказали:
sisop
Сообщения: 54

Re: Решено: Кеширование средствами nginx

Сообщение sisop »

убрать из http {} и добавить proxy_cache one в нужный блок server {}, разве нет?

и вообще, это четко прописано в доках -

syntax: proxy_cache [зона|off]
default: off
context: http, server, location


Директива задаёт зону для кэширования. Одна и та же зона может использоваться в нескольких местах. Параметр "off" запрещает кэширование, унаследованное с предыдущего уровня конфигурации.
Спасибо сказали:
JwsD
Сообщения: 129
ОС: ArchLinux

Re: Решено: Кеширование средствами nginx

Сообщение JwsD »

sisop писал(а):
30.12.2009 22:06
убрать из http {} и добавить proxy_cache one в нужный блок server {}, разве нет?

и вообще, это четко прописано в доках -

syntax: proxy_cache [зона|off]
default: off
context: http, server, location


Директива задаёт зону для кэширования. Одна и та же зона может использоваться в нескольких местах. Параметр "off" запрещает кэширование, унаследованное с предыдущего уровня конфигурации.

ДА!Только после этой манипуляции эффекта никакого, папочка с кешем не заполняется... а то что написано :) я почему то не верю этому
Спасибо сказали:
sisop
Сообщения: 54

Re: Решено: Кеширование средствами nginx

Сообщение sisop »

у меня работает в 0.7 именно так, как прописано в доке. В 0.8 вроде тоже работает, но косячки были. Зачем вам именно 0.8 ?
Спасибо сказали:
JwsD
Сообщения: 129
ОС: ArchLinux

Re: Решено: Кеширование средствами nginx

Сообщение JwsD »

Эх. По совету, поставил 0.7 ветку. Эффекта было ноль. Потом уже в качестве исключения решил проверить. В итоге, до меня дошло, что это просто не тот вирт хост, проблема была в listen был указан не тот ip адрес. Удачи :)
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Решено: Кеширование средствами nginx

Сообщение KiWi »

Hint: создатель nginx -- Игорь Сысоев, русский, так что все вопросы по nginx быстрее всего решать в листах рассылок, в которых обитает Игорь, они же -- официальные списки рассылок -- в частности, nginx-ru@nginx.org.
Спасибо сказали: