эмуляция if/else

Sergej Kandyla sk.paix at gmail.com
Wed Apr 23 19:45:18 MSD 2008


Roxis wrote:
> On Wednesday 23 April 2008, Sergey Shepelev wrote:
>   
>> Всегда были не совсем ясны сходство и различия break;, rewrite break и
>> rewrite last.
>>
>> Обычная задача. Существующие файлы отдавать статикой, несуществующие
>> проксировать. Сейчас написано два if: -f и !-f.
>>
>> Как это написать более правильно?
>>
>> Может так? Есть комментарии по поводу этого куска?
>>
>> location / {
>> 	if (-f $request_filename) {
>> 		break;
>> 		root html;
>> 	}
>> 	proxy_pass http://127.0.0.1:1234;
>> }
>>     
>
> более правильно не использовать if вообще:
>
> location / {
>     root html;
>     error_page 404 = @backend;
> }
>
> location @backend {
>     proxy_pass ...;
> }
>   

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

мне нравится реализация автоматических субдоменов

server {
    listen 80;
    server_name example.com *.example.com;
    root /var/www/example.com/$subdomain;
    set $subdomain "";
    if ($host ~* ^([a-z0-9-\.]+)\.example.com$) {
        set $subdomain $1;
    }
    if ($host ~* ^www.example.com$) {
        set $subdomain "";
    }
}

но, судя по настроениям рассылки, это плохая практика...

-- 
Wbr, SK






More information about the nginx-ru mailing list