Welcome! Log In Create A New Profile

Advanced

Проблема с кешированием Nginx

Posted by asinfo 
Проблема с кешированием Nginx
January 20, 2012 06:47AM
Добрый день !

Настраиваю кеширование на сайте
сервер под Линуксом
установлен nginx-stable-1.0.11-1.el5

конфиг:

user nginx;
worker_processes 1;
worker_rlimit_nofile 1024;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;


events {
worker_connections 1024;
use epoll;
}


http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$upstream_cache_status"';

access_log /var/log/nginx/access.log main;
proxy_buffering on;
proxy_cache_path /var/nginx/cache levels=1:2 keys_zone=cache:5m inactive=7d max_size=200m;
# proxy_temp_path /var/nginx/temp;

proxy_buffer_size 4k;
proxy_buffers 100 8k;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;

server {

server_name test.biz.ua www.test.biz.ua;
listen xxx.xxx.xxx.xxx:8080;
charset cp1251;
index index.php;
location ~* ^.+\.(html|jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root /var/www/test/data/www/test.com.ua/test;
#########################################################
proxy_cache_valid 200 302 304 1m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
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" "Set-Cookie";
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache cache;
########################################################


access_log /var/www/nginx-logs/test isp;
access_log /var/www/httpd-logs/test.biz.ua.access.log ;
error_page 404 = @fallback;
}
location / {
proxy_pass http://xxx.xx.xx.xx:80;
#proxy_redirect http://xxx.xx.xxx.xxx:80/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;


proxy_cache_valid 200 302 304 30m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 30m;
proxy_cache_key "$host$uri$is_args$args";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache cache;

}
...
location @fallback {
proxy_pass http://xxx.xx.xxx.xxx:80;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
include /usr/local/ispmgr/etc/nginx.inc;
}

Когда я запускаю с таким конфигом - кеширования нет
Если же я конфиг кеширования добавляю прямо в контекст сервера (server { .... ) - то все работает
Получается что кеширование именно для location / не работает
Пробовал различные настройки, менял опции - не помогает

Помогите разобраться, в чем проблема.

Спасибо!
С уважением, Алексей
Re: Проблема с кешированием Nginx
January 26, 2012 02:36PM
Та же фигня. У меня даже в server не помогает (хотя толком не смотрел, но на вид). nginx/1.1.4
Регулярно отбиваю ддос атаки и кеширование было бы ну ооочень кстати, но не пашет :(

Вот части конфига:

http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;
access_log off;

sendfile on;
server_tokens off;

reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 5;
keepalive_timeout 30 15;

limit_zone cglob $binary_remote_addr 10m;
limit_conn cglob 20;
limit_req_zone $binary_remote_addr zone=qglob3r:10m rate=3r/s;
limit_req_zone $binary_remote_addr zone=qglob1r:10m rate=1r/s;
#limit_req zone=qglob burst=4;

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=all:30m;

gzip on;
gzip_types text/plain application/xml;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;

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;

server {
...
keepalive_timeout 15;


sendfile on;

open_file_cache max=2000 inactive=120s;
open_file_cache_valid 180s;
open_file_cache_min_uses 2;
open_file_cache_errors off;



...

location ~ /\.ht {
deny all;
}

location ~* ^/\.|\.php$ {
try_files unexisted_file @site;
}

location ~* ^/files/videos/flv/.*$ {
flv;
limit_rate_after 1024k;
limit_rate 196k;
}

location ~* ^/files/videos/mp4/.*$ {
mp4;
mp4_buffer_size 5m;
mp4_max_buffer_size 20m;
limit_rate_after 1024k;
limit_rate 196k;
}

location ~* .*$ {
limit_rate_after 1024k;
limit_rate 196k;
try_files $uri @site;
}

location @site {
limit_req zone=qglob3r burst=4;

proxy_cache all;
#proxy_cache_valid 502 503 1m;
proxy_cache_key "$host$request_uri$cookie_phpsessid";
proxy_cache_valid 200 2m;
proxy_cache_bypass $cookie_auth;
proxy_no_cache $cookie_auth;

proxy_pass http://127.0.0.1:8080;
}
}

...
}

Да, хотел еще спросить:
видите у меня такие штуки try_files unexisted_file @site; просто я нигде не нашел как можно перенаправить на именованный локейшн.
Спасибо

http://bobrosoft.com
Re: Проблема с кешированием Nginx
January 26, 2012 03:10PM
У меня появилось подозрение, что для кеширования нужно обязательно отдавать некоторые заголовки, что-то из Last-Modified, Expires или ETag, а может Cache-Control, но еще не проверял. Может нам ответит тот, кто в курсе? Просто у меня есть ресурсы, которые отдаются динамически и там выставляются все из указанных заголовков и я в еррор_логе вижу, что они кешируются, но остальная динамика (сам контент страниц) не кешируется, ну и этих заголовков там тоже нет, ведь на то она и динамика.

http://bobrosoft.com
Re: Проблема с кешированием Nginx
January 30, 2012 02:29AM
Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 67
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready