ПРОЕКТЫ 


  АРХИВ 


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]

Момент выполнения try files ?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Момент выполнения try files ?
  • From: "lazutov" <nginx-forum@xxxxxxxx>
  • Date: Wed, 28 Sep 2011 16:51:30 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=66rBENUHB/VCbul1XALfY6um7XdpQTHHpdt3JgIt2u4=; b=InrubZUULjj+q00a6kvj96Qe5+XG16ew9JED4o9W0bZhgIJtSWgNCjLpn4AkjigIYOxEVu1FRn/jALgsj5YApUoK0jeZs3ngR7+qsTnHFr4Gr/J1qJy+4TJ7gzxD9+7d;

Всем добрый день!

Итак задача. В целях нормального
изучения nginx я решил часть функций
перенести с бекенда на вебсервер.  
Например, обычный антихотлинкинг.
Конфигурация рабочая, но есть
небольшие вопросы.
Логика работы.
Файлы лежат в /storage, бекенд в /admin, эрроры 
в /err
Проверяем реферер, если корректный,
отдаём как и предполагалось из /storage,
некорректный -- отсылаем на бекенд (403 =>
@info).
add_header нужен для минимального дебага.

Проблемы
1.  при запросе несуществующего в storage
файла  (напр. /nonexistant.txt)
try_files $uri /err/404.html =404;
работает не так как я ожидаю. Я ожидаю
отдачи /err/404.html , но запрос идёт в @info; Без
переопределения (=404)  аналогично.
Если реферер валидный, то получаю 404 как
и ожидалось. 

Замена try_files на if (!-f $request_filename) {return 404;}
дала хороший результат, но мне кажется
это кривотой, т.к операция очень
простая и должна решаться без
рерайтов.
2. location = / { rewrite ^/$ /err/200.html;}  кажется также
 кривотой по тем же причинам. Возможно я
не замечаю чего-то очевидого.

server {
        include /etc/nginx/conf/listen.conf;
        server_name test-lcl.qwerty.name;
        error_page 404 /err/404.html;
        error_page 403 /err/403.html;
        error_page 401 /err/401.html;
        error_page 500 502 503 504 /err/50x.html;
        location /err{
                root /home/lazutov/img-test.qwerty.name; 
        }
        location / {
                root /home/lazutov/img-test.qwerty.name/storage;
                error_page 403 @info;
                try_files $uri /err/404.html =404;              
                valid_referers *.qwerty.name;
                if ($invalid_referer) {return 403;}
                        
        }
        location @info{
                rewrite ^/(.*) /admin/rewrite.php?q=$1 last;
        }
        location = / { rewrite ^/$ /err/200.html;}
        location /admin {
                root /home/lazutov/img-test.qwerty.name; 
                location ~ \.php$ {
                        # ...
                }
        }
}

Прошу ткнуть в соответствующий ман
и/или пояснить причину такой
обработки.
Заранее спасибо!

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,215988,215988#msg-215988

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.