ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: эмуляция if/else



pavel@xxxxxxxxxxx wrote:
Вариации на тему виртуалдокрут->nginx+apache.
http://trash.pronskiy.ru/nginx.conf

#static delivery images and files location ~* ^.+\.(swf|gif|jpg|jpeg|png|ico|js|css|xsl|txt|doc|rtf|pdf|rar|zip|gz|tgz|xls)$ {

           if (!-f $request_filename) {proxy_pass http://127.0.0.1:8000;}
if ($http_host ~ ^([^.]+)\.([^.]+)\.([^.]+)$) { set $root /home/$2/$1.$2.$3/www; } if ($http_host ~ ^www\.([^.]+)$) { set $root /home/$1/$1.$2/www; } if ($http_host ~ ^([^.]+)\.([^.]+)$) { set $root /home/$1/www.$1.$2/www; } if ($http_host ~ ^mail\.(.*)$) { set $root /var/www/webmail/www; } if ($http_host ~ ^mysql\.(.*)$) { set $root /var/www/phpmyadmin/www; } if ($http_host ~ ^mailadmin\.(.*)$) { set $root /var/www/mailadmin/www; }

           proxy_set_header            Host                    $host;
           proxy_set_header            X-Real-IP       $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           send_timeout                60m;


           root $root;expires 1d;

    }


Интересный пример! Спасибо.
у меня на шареде конфигурация попроще...домены до 0.5 -1к уник. хостов проксируются на апач полностью. Для более нагруженных доменов скриптом генирируется конфиги соотвествующего виртуалхоста в нжинкс (динамика по прежнему на апач.)


Вопрос другой, не хочется привязываться к статическим расширениям (у вас их что-то вообще мало)...

location ~* ^.+.(nrg|htm|jpg|jpeg|gif|png|ico|css|zip|7z|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi| wav|bmp|rtf|js|avi|mp3|mp4|mpg|iso|djvu|dmg|flac|r70|mdf|chm|sisx|sis|flv|thm|bin)$ {
          root /home/vhosts/domain/public_html/;
       }


и постоянно этот списочек расширений статики приходится дополнять...т.к. пользователи умудряются залить контент в самых немыслимых форматах. Отказаться полностью от апача мешает апачевский .htaccess ( или нежелание писать реврайты на все случаи жизни под всевозможные cms)

хотелось бы что-то в духе

       location ~* ^.+\.(php|html|shtml)$ {
               proxy_pass http://IP;
       }

        location ~* ^.+\.(..?)$ {
               if (!-f $request_filename) {proxy_pass http://IP;}
                root /home/vhosts/domain/public_html/;
       }

т.е. динамику (php|html|shtml) отдаем на бекенд, а также если путь к статике динамически сгенерирован - то тоже на бекенд.
Всю остальную предполагаемую статику (..?) отдаем нжинксом.

Такая конфигурация у меня не заработала (статика отдавалась бекендом)
гдето ошибаюсь?


При запросе к статике получаем докрут для любого домена привязанного к этому ip Путь к клиентской статике для нжинкс: /home/domain.tld/www.domain.tld/www/
Если путь к статике динамически сгенерирован - отдаём  апачу.

   if (!-f $request_filename) {proxy_pass http://127.0.0.1:8000;}



более правильно не использовать if вообще:


Подскажите, насколько больший оверхеад дают использование if по сравнению с неиспользованием?




--
Wbr, SK




 




Copyright © Lexa Software, 1996-2009.