ПРОЕКТЫ 


  АРХИВ 


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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: эмуляция if/else
  • From: Roxis <roxis@xxxxxxx>
  • Date: Thu, 24 Apr 2008 13:11:51 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:from:to:subject:date:references:in-reply-to:x-face:x-mailer:mime-version:content-type:content-transfer-encoding:content-disposition:message-id:sender; bh=uedkDeXOKAII1D8wwdHRhlYozm21n+Zq0gcUih7tuKM=; b=K57kUzfIDqiw4PlsYwDW6K+QHgP/wcxTPEldhd1wkDmzz1AD5sDCWk/AnCwhB6O3VgPOVNkfDC2HNVcMLiyE3xvqu5ZW69o77bcGmt0tTvD5OSNftA9R6l2EI7XXqiln+AvFx27k241rmXguMF+5S+z0A5kr9JJT7joqApqI/bI=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:subject:date:references:in-reply-to:x-face:x-mailer:mime-version:content-type:content-transfer-encoding:content-disposition:message-id:sender; b=C6A3C9BWD5CZ/Ag3EgO4eGThfPq6eXx/85/t3BW7sLQJ9eNSlcB4Np8FnPi9XlnQ676n/KcED9raHHonGWmvWRoB941RMXtp5/xtGOIsihhmxEs5L8JR0uzJMRx+HmgkX6D6uHIbQr5jwc84ASWvKX6KSHp9qwrU6dP08zoUHtA=
  • In-reply-to: <48106734.3020405@xxxxxxxxx>
  • References: <480F19D9.80901@xxxxxxxxx> <480F67AB.3000905@xxxxxxxxxxx> <48106734.3020405@xxxxxxxxx>

On Thursday 24 April 2008, Sergej Kandyla wrote:
> 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|t
>hm|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) отдаем на бекенд, а также если путь к
> статике динамически сгенерирован - то тоже на бекенд.
> Всю остальную предполагаемую статику (..?) отдаем нжинксом..
>
> Такая конфигурация у меня не заработала (статика отдавалась бекендом)
> гдето ошибаюсь?

ошибаетесь наверно в "(..?)"

и опять же, лучше использовать error_page чем if (!-f ...)

location / {
    root html;
    error_page 404 = @backend;
}

location @backend {
    proxy_pass ...;
}

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


 




Copyright © Lexa Software, 1996-2009.