Проксирование Ruby On Rails через nginx с кэшироваинем в memcached (nginx memcached rails ruby web)
Published on Январь 24, 2009 by admin · Комментариев нет
Настройка nginx
С этим все несложно, однако подводные камни все равно есть из-за
упертого мнения nginx-а, что постить можно не куда попало, а только
куда ему кажется возможным.
Опишем конфигурацию при которой по-умолчанию nginx будет ходить к
memcached-у, а при отдаче 404 ошибки (нет страницы), 405 (нельзя
постить в memcached) или чего-то еще, пойдет к рельсам.
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
upstream mongrel {
server 127.0.0.1:5035;
server 127.0.0.1:5036;
}
server {
listen 80;
server_name maxidoors.ru;
root /var/www/maxidoors/public;
location / {
default_type text/html;
# иначе из memcached-а потечет непойми чего.
# теперь надо указать директивы для proxy,
# потому что мы уже отсюда можем отправиться к монгрелам
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
# делаем хак для обхода непонятного мне поведения nginx-а
if ($request_method = POST ) {
proxy_pass http://mongrel; break;
}
set $memcached_key "totalhockey:production:$uri"
# обратите внимание на формат ключа.
# Рельсы сейчас используют полную херню вместо ключа,
# об этом поподробнее потом.
memcached_pass localhost:11211;
# 404 ошибка получится, когда нет нужной страницы.
# Ничего страшного, идем к рельсам.
error_page 404 = /fallback;
# 502 получим в том случае, если memcached отвалился.
# это не повод стреляться, но сессии скорее всего хранятся тоже в нем.
error_page 502 = /fallback;
}
# Статику отдаём nginx-ом. Аналогично вписать для стилей и яваскрипта
# разница только в том, что для стилей и яваскриптов нельзя ставить
# такое огромное время жизни. Они чаще меняются.
location ~* images/.+\.(jpg|jpeg|gif|png)$ {
root /var/www/totalhockey/current/public;
access_log off;
expires 30d;
}
location /fallback {
# повторяем лабуду для прокси
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://mongrel;
break;
}
}
}
}
Всё, nginx настроен. Теперь начинается самое веселое и пока что
недоделанное. Идем к моему тикету и забираем приложенный патч. Он
для edge (1.2.3—1.2.4) рельс, но если надо его можно приспособить и
для более старых версий.
Плюс к этому, надо поставить memcache-client и memcache_fragments.
Второй представляет из себя 10 строчек кода, которые сейчас в процессе
включения в memcache-client.
Плюс к этому надо еще найти строчку normalize! в
actionpack/lib/action_controller/caching.rb и закомментировать её.
После этого запустите memcached с ключом -vv и убедитесь, что рельсы
складывают в кеш страницы ровно по тем урлам, которые приходят от
клиента.
Смотрите также: Tags: nginx, rails, ruby
Exchange 2007
Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам:
Проведение мониторинга Exchange 2007 с помощью диспетчера System ...
[+]
Введение
В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ...
[+]
Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ...
[+]
Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ...
[+]
Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам:
Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1)
...
[+]
If you missed the previous parts in this article series please read:
Exchange 2007 Install and Configuration from the command line (Part ...
[+]
Инструмент ExRCA
Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями:
Тест подключения Outlook 2007 Autodiscover
Тест подключения Outlook 2003 RPC ...
[+]
Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам:
Развертывание сервера Exchange 2007 Edge Transport (часть 1)
Развертывание ...
[+]
Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ...
[+]
Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ...
[+]