Кэширование в nginx

В категории Подсказки от 13 июля, 2011. Автор admin

Включение кэширования средствами nginx позволяет повысить скорость отдачи часто используемых страниц в очень много раз. Фишка в том, что сгенерированная апачем страница сохраняется в виде готового html-файла на диске и при поступлении запроса на такой же урл (совпадение по md5) файл-кэш быстро отдается клиенту. Кэширование в nginx доступно с версии 0.7.44. Благо в репозитории EPEL уже штатно присутствует 0.8.
К настройке кэширования нужно относиться очень внимательно, потому что на динамических сайтах весьма высока вероятность обрубания функциональности сайта: перестанут работать корзины на сайтах-магазинах, поломаются счетчики просмотров и тд.
Самая простая настройка выглядит так:
Сначала в http-секции прописываем где будет лежать кэш, его размер и время устаревания:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=myzone:16m inactive=7d max_size=1024m;

Чистить кэш nginx будет сам. Кстати, в процессе отладки вы можете просто ходить в эту папку и смотреть что там закэшировалось.
Кэш можно включить либо для определенного location либо для всего виртуального хоста.
proxy_no_cache $cookie_logged; #условия, при которых ответ не будет сохраняться в кэш
proxy_cache_bypass $cookie_logged; #условия, при которых ответ не будет браться из кэша
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_pass_header Set-Cookie;#разрешает передавать от проксируемого сервера клиенту запрещённые для передачи строки
proxy_ignore_headers «Expires» «Cache-Control»; #запрещает обработку некоторых строк заголовка из ответа проксированного сервера
proxy_cache_valid 200 301 302 304 1h; #время кэширования для разных ответов
proxy_cache myzone; #включает кэширование и задает зону

В процессе настройки посмотрите какие куки и в какой момент отправляет пользователю ваше приложение.
В интернете можно найти готовые конфиги nginx-а для кэширования под различные популярные CMS.
“Тупой” вариант кэширования с большим сроком устаревания кэша можно использовать в момент DDOS-а, тогда есть шанс, что сервер справится с наплывом запросов и сайт хоть и потеряет в функциональности, но останется доступен для поисковых систем и не уронит в след за собой остальные сайты на этом сервере.

Тэги:

Узнаём кодировку БД

В категории Подсказки от 13 июля, 2011. Автор admin

Прежде всего создаем БД через консоль

mysql> CREATE DATABASE `my_db` CHARACTER SET utf8 COLLATE utf8_general_ci;

Далее у нас есть два пути :

1. Узнать через ту же самую консоль

mysql> use my_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SHOW VARIABLES LIKE «character\_set\_database»;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| character_set_database | utf8 |
+————————+——-+
1 row in set (0.00 sec)

mysql>

2. Узнать через тех файл базы

cat /var/lib/mysql/my_db/db.opt
default-character-set=utf8
default-collation=utf8_general_ci

Тэги:

Установка Zend Optimizer

В категории Подсказки от 11 июля, 2011. Автор admin

Перейдем в директорию /usr/local/src:
cd /usr/local/src

Загрузим дистрибутив с сайта производителя для 32-битных ОС:
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

или для 64-битных ОС:
wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
Выбераем последнюю стабильную версию.

Распаковываем:
tar -xzf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

Переходим в директорию ZendOptimizer-3.3.9-linux-glibc23-i386:
cd ZendOptimizer-3.3.9-linux-glibc23-i386

Копируем файл для версии 5.2.xx (или для своей версии php):
cp -rfv data/5_2_x_comp/ZendOptimizer.so /usr/local/Zend/lib

В файл /etc/php.ini вносим строки в секцию [Zend]:
[Zend]
zend_extension=/usr/local/Zend/lib/ZendOptimizer.so

Перезапускаем Apache командой:
service httpd restart

Тэги: ,