Отдача большого контента через fast_cgi

Andrew Kopeyko kaa на zvuki.ru
Чт Ноя 26 16:26:54 MSK 2009


Peter A. Shevtsov wrote:
> 26 ноября 2009 г. 14:05 пользователь Andrew Kopeyko <kaa at zvuki.ru> написал:
>> Peter A. Shevtsov wrote:
>>> server {
>>>        if ($host ~* www\.(.*)) {
>>>                set $host_without_www $1;
>>>                rewrite ^(.*)$ http://$host_without_www$1 permanent;
>>>        }
>>>
>>>        if ($host !~* www\.(.*)) {
>>>                set $host_without_www $host;
>>>        }
>>>
>>>        if ($host !~*
>>>
>>> ^(mera.com.ru|www.mera.com.ru|m3ra.ru|www.m3ra.ru|mhra.ru|www.mhra.ru|mhera.ru|www.mhera.ru|time-to-live.net.ru|www.time-to-live.net.ru|dotu.ru|www.dotu.ru)$
>>> ) {
>>>                return 444;
>>>        }
>>>
>>>        access_log  /var/log/nginx/$host_without_www.access.log main;
>>>        error_log   /var/log/nginx/wpmu.error.log info;
>>>
>>>        root         /var/www/html/default;
>>>        limit_conn   myzone  5;
>>>        listen       80;
>>>        server_name  mera.com.ru www.mera.com.ru m3ra.ru www.m3ra.ru
>>> mhra.ru www.mhra.ru mhera.ru www.mhera.ru time-to-live.net.ru
>>> www.time-to-live.net.ru dotu.ru www.dotu.ru;
>>>        client_max_body_size 40m;
>> Да вы, батенька, извращенец!
>>
>> Сделайте нескольки виртуальный серверов, например
>>  server {
>>    listen 80 default;
>>    server_name fake.default.host;
>>    return 444;
>>  }
>>  server {
>>    listen 80;
>>    server_name mera.com.ru www.mera.com.ru ; # и все прочие ваши имена
>>    ...;
>>  }
>> и вы избавитесь от ужасающей логики
>>         if ($host ~* www\.(.*)) {
>>                 set $host_without_www $1;
>>                 rewrite ^(.*)$ http://$host_without_www$1 permanent;
>>         }
>>         if ($host !~* www\.(.*)) {
>>                 set $host_without_www $host;
>>         }
>>
> 
> Ужасающая логика нужна, чтобы был редирект с www.domain.tld на
> domain.tld и логи создавались вида domain.access.log. Или можно как-то
> изящнее это изобразить?

Конечно можно - 2 вирт.сервера вполне могут писать в 1 лог :
   server {
     listen 80;
     server_name www.mera.com.ru;
     rewrite  ^(.*)$  http://mera.com.ru$2 permanent;
     access_log  /var/log/domain.access.log main;
   }
   server {
     listen 80;
     server_name mera.com.ru;
     access_log  /var/log/domain.access.log main;
     ...;
   }

>> добавьте
>>  location /files/ {
>>    internal;
>>    root ...;
>>  }
> 
> А root тут куда вести должен? 

Я не знаю где в вашей файловой системе лежит запрашиваемый
   /files/19970604_Proses_mirivozzrencheskix_transformatsiy.pdf

Ваши объяснение на URI ясности, в сожалению, не добавляют.

Посмотрите что вам скажет
   $ locate 19970604_Proses_mirivozzrencheskix_transformatsiy.pdf
и "отнимите" от пути /files/ - вот примерно туда должен вести root


 > По запросу
 > myblog.tld/files/file_name.ext идёт рерайт на blogs.php который уже
 > делает x-accel-redirect на /blogs.dir/$myblog_id/files/file_name.ext

Значит, не-проксироваться на бэкенд должен
   location /blogs.dir/ {



-- 
Best regards,
Andrew A. Kopeyko <kaa at zvuki.ru>
http://www.zvuki.ru/



Подробная информация о списке рассылки nginx-ru