суббота, 20 июня 2009 г.

Как кешировать nginx

Допустим есть какой-то полудохлый сервер с сайтами и он частенько лагает.
Берем и ставим там nginx для кеширования. В результате все чудным образом ускоряется и работает в разы быстрее.
Отлично подходит для сайтов которые обновляются не так уж и часто
Конфиг:

worker_processes 1;
worker_rlimit_nofile 16384;


error_log /var/log/nginx/nginx.err.log crit;
pid /var/run/nginx.pid;


events {
worker_connections 16384;
use epoll;
}


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

sendfile on;
tcp_nopush on;
tcp_nodelay on;

keepalive_timeout 15;

gzip on;
gzip_disable .MSIE [1-6].;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain text/css text/xml application/x-javascript;

proxy_cache_path /var/tmp/nginx/proxy_cache levels=1:2 keys_zone=CACHE:1024m;

include /etc/nginx/vhosts/*.conf;

}

Как понятно из конфига - должна быть директория /etc/nginx/vhosts/ :)
А вот и скрипт, с помощью которого можно автоматизировать добавление доменов, я назвал его addhost.sh, его надо класть в /etc/nginx:

#!/bin/sh
cat <<> vhosts/$DOMAIN.conf
server {
listen $IP:80 default deferred;
server_name $DOMAIN www.$DOMAIN;
set \$p $DOMAIN;
access_log off;

proxy_cache CACHE;
proxy_cache_min_uses 1;
proxy_cache_valid 10m;
proxy_cache_use_stale http_503;
proxy_ignore_client_abort on;
open_file_cache max=1000 inactive=60s;
open_file_cache_valid 120s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

location / {
proxy_pass http://$IP:85/;
proxy_redirect off;
proxy_set_header Host \$p;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Host \$http_host;
proxy_set_header X-URI \$uri;
proxy_set_header X-ARGS \$args;
proxy_set_header Refer \$http_refer;
}

}
EOF
service nginx reload

Все это безобразие запускается так:
cd /etc/nginx; IP=айпишнек DOMAIN=доменчик ./addhost.sh

Простенько и со вкусом. В моем примере бакенд висит на 85-ом порту, но конечно все можно сменить, например у меня на хостинге апач на 80-ом, а nginx - на 85-ом

0 коммент.:

Отправить комментарий