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