Nginx - DLE, кеширование и настройка под 100-200 тысяч пользователей
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2025
Nginx - DLE, кеширование и настройка под 100-200 тысяч пользователей в день
Настройка для DLE:
- Кешировать «гостей» сайта
- Залогиненных посетителей отправлять напрямую к апачу
Протестировано на сайте с 100-200k посещаемостью в день - LA упал с 70 до 1-5
Секция http:
http {
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=one:16m inactive=7d max_size=1024m;
proxy_temp_path /var/cache/nginx/temp;
Секция виртуального хоста:
server {
server_name site.com www.site.com;
listen xxx.xxx.xxx.xxx;
set $root_path /var/www/user/data/www/site.com;
proxy_temp_path /var/cache/nginx/site.com;
location @nocached {
proxy_pass http://xxx.xxx.xxx.xxx:81;
proxy_redirect http://xxx.xxx.xxx.xxx:81/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://xxx.xxx.xxx.xxx:81;
proxy_redirect http://xxx.xxx.xxx.xxx:81 /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
#здесь мы фильтруем наших залогиненых пользователей
if ($cookie_dle_user_id) { return 412; }
if ($cookie_dle_password) { return 412; }
if ($request_method = POST ) {
return 412;
}
error_page 412 = @nocached;
proxy_cache one;
proxy_cache_key "$request_method|$is_args|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_valid 200 302 304 5m;
proxy_cache_valid 301 1h;
proxy_cache_valid 503 4s;
proxy_cache_valid any 1m;
proxy_cache_use_stale http_502 http_503 http_504;
}
location ~ (admin.php|index.php?action=logout) {
proxy_pass http://xxx.xxx.xxx.xxx:81;
proxy_redirect http://xxx.xxx.xxx.xxx:81/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|htm|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
root /var/www/user/data/www/site.com;
expires 1y;
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://xxx.xxx.xxx.xxx:81;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
include /usr/local/ispmgr/etc/nginx.inc;
}
