Nginx - DLE, кеширование и настройка под 100-200 тысяч пользователей

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2023
Перейти к:навигация, поиск


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;
       }