| Nginx-ru mailing list archive (nginx-ru@sysoev.ru) [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
 Re: Исключить кеширование о	тдельно взятого файла
 
 On Mon, Jun 07, 2010 at 11:18:46AM -0400, grigory wrote:
> Добрый день. У меня включено кеширование на сервере, но один скрипт постоянно 
> обращается к серверу через AJAX сотни раз в минуту, и у него каждый раз 
> уникальный url, чтобы браузер не кешировал. Из-за этого в кеше nginx'а 
> возникают тысячи файлов, которые генерируются, по-сути, этими запросами, и в 
> кеше абсолютно не нужны.
> 
> Конфиг примерно такой:
> 
> ===================
> ...
>     proxy_cache_path   /var/cache/nginx levels= keys_zone=wholepage:50m;
> 
>     server {
>         listen       80;
>         server_name  server.com www.server.com;
> 
>         keepalive_timeout 0;
> 
> gzip  on;
> gzip_min_length 5000;
> gzip_proxied any;
> gzip_types text/plain text/xml application/xml application/x-javascript 
> text/javascript text/css text/json;
> gzip_comp_level 6;
> gzip_buffers 16 8k;
> gzip_disable ?MSIE [1-6].(?!.*SV1)?;
> 
>         location / {
>     proxy_pass http://server.com:8080/;
>    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;
> 
>             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;
>             proxy_busy_buffers_size    64k;
>             proxy_temp_file_write_size 64k;
> 
>             proxy_cache         wholepage;
>             proxy_cache_valid   200 301 302 304 30m;
>             proxy_cache_key     
> "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
>             proxy_hide_header   "Set-Cookie";
>             proxy_ignore_headers        "Cache-Control" "Expires";
> 
>             root /var/www/virtual/server.com;
>         }
> ...
> ================
> 
> Я так понимаю, что мне нужно добавить location в конфиг вроде такого 
> (отключить кеширование у файла find.php):
> 
>         location ~ ^/find.php {
>            proxy_cache         off;
>         }
> 
> Но из-за этого файл find.php просто перестает работать с ошибкой 405 Not 
> Allowed.
> 
> Подскажите, как сделать правильно, что кэш работал как прежде, но исключал 
> find.php.
Отвыкаем мыслить регулярными выражениями, достаточно
         location = /find.php {
Вот этот кошмар не нужен:
         proxy_cache_key     
"$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
Конфигурация выглядит так:
 
         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;
         proxy_busy_buffers_size    64k;
         proxy_temp_file_write_size 64k;
         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://server.com:8080;
             proxy_redirect off;
             proxy_cache         wholepage;
             proxy_cache_valid   200 301 302 304 30m;
             proxy_hide_header   "Set-Cookie";
             proxy_ignore_headers   "Cache-Control" "Expires";
         }
         location = /find.php {
             proxy_pass http://server.com:8080;
             proxy_redirect off;
         }
-- 
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
 |