эмуляция if/else
Sergej Kandyla
sk.paix at gmail.com
Thu Apr 24 14:55:48 MSD 2008
pavel at pronskiy.ru 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
More information about the nginx-ru
mailing list