Nginx - DLE, кеширование и настройка под 100-200 тысяч пользователей
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
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; }