Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Проблема кеширования медл енного удаленного фронт энда
- To: nginx-ru@xxxxxxxxx
- Subject: Проблема кеширования медл енного удаленного фронт энда
- From: "burguyd" <nginx-forum@xxxxxxxx>
- Date: Fri, 08 Jul 2011 12:28:22 -0400
- Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=fKKzYv7qtxKL+pnGqjwNIJsuh6Rne1ztujzETpXSOsY=; b=DugyxaosLqgyI4bjqLH24KeR+2c8SHotGxhVABq4HdYaLi11PhSJIQKEHtebG3vA51NHOWsoenWhbxle+YbFBHF94KWtTgJxMTy9b3iigmY2jSPVygpupaOGN3j3cb1b;
Приветствую всех.
Кротко опишу проблему.
В ВУЗе, где я работаю, есть сайт.
Расположен он на сервере в DMZ локальной
сети. Исходящий канал в интернет всего
0,5 Мбит/с (да такой ужас). Веб сервер
смотрит в интернет одним интерфейсом и
в локальную сеть другим.
Конфигурация сервера: FreeBSD 8.2, Apache 2.2, php
5.2, mysql 5.1. Сам сайт писан на drupal.
У сайта есть несколько особенностей:
Первая собенность в том, что его очень
интенсивно используют юзеры локальной
сети. Постоянно добавляют и
редактируют контент. Но т.к. в локальной
сети коннект 100 Мбит/с, чувствуют они
себ достаточно комфортно.
Вторая особенность в том, что во время
вступительной кампании внешний
траффик на сайт резко возрастает.
Связано это с тем что в это время
абитуриенты ломятся познакомится с
ВУЗом и мониторят проходной бал на свои
специальности, который меняется в
реальном времени на сайте.
Из-за значительной нагрузки и узкого
канала в интернет у внешних
пользователей сайт практически не
грузится.
Возможности расширить канал пока нет.
Мы придумали решение - арендоваnm VPS и
повесить на него фронтэндом nginx. Идея
состояла в том, чтобы nginx сделал себе
полный кеш сайта, и отдавал его, не
напрягая фронтэнд.
Так и сделали. Однако ощутимого
прироста быстродействия не ощутили
(проверяли с помощью loadimpact).
В связи с этим у меня несколько
вопросов.
1. Правильной ли дорогой идем, товарищи?
Или есть более изыщное решение.
2. Как заблаговременно сделать
локальный кеш на сервере фронтэнде и
синхнонизировать его скажем раз в
пол-часа?
3. Каз сделать локальный .gz кеш на
сервере фронтэнде, чтобы всю статику
пусть и зазипованную не нянуть с
удаленного сервера, а складировать у
nginx'a локально и оттуда отдавать.
Спасибо всем кто дочитал. Надеюсь на
вашу помощь и снисходительность.
Конфиг nginx :
user _nginx;
worker_processes 1;
error_log /var/log/nginx/error.log notice;
events {
worker_connections 1024;
use kqueue;
}
http {
include mime.types;
proxy_pass_header Cookie;
proxy_cache_path /var/nginx/cache
levels=1:2 keys_zone=my_cache:1024m max_size=3092m
inactive=1d;
proxy_cache my_cache;
proxy_cache_valid 200 3h; # раз в три часа будем
позволять себе обновлять кеш :)
proxy_cache_valid any 0; # не кешируем 500 и 400
ошибки
proxy_cache_use_stale updating error timeout invalid_header http_500
http_502 http_503 http_504 http_404; # если ваш скрипт
отдал одну из описанных ошибок, ис
пользовать вариант из кеша, если он
есть, даже если он уже заэкспайрился
proxy_cache_key "$scheme$proxy_host$uri$is_args$args$cookie_sid";
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 1500;
proxy_send_timeout 1500;
proxy_read_timeout 1500;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path /var/nginx/proxy_temp;
default_type application/octet-stream;
reset_timedout_connection on;
sendfileon;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
gzip on;
gzip_static on;
gzip_http_version 1.1;
gzip_proxiedexpired no-cache no-store private auth;
gzip_disable"MSIE [1-6]\.";
gzip_vary on;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml
application/xml application/xml+rss text/javascript;
upstream backend {
server 75.205.198.2:80;
}
listen 80 default;
server_name localhost;
deny all;
}
server {
listen 80;
server_name www.site.ru site.ru;
location / {
proxy_pass http://backend;
access_log off;
}
location ~ /\.ht {
deny all;
}
}
}
Posted at Nginx Forum:
http://forum.nginx.org/read.php?21,212034,212034#msg-212034
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|