Internal redirect. Howto

Dmitriy MiksIr miksir at maker.ru
Thu Feb 12 16:56:19 MSK 2009


Извините, но конфиг у вас какое-то.. странный.
Может потому что поскипанный
Но не ясно, зачем описывать все статические файлы по расширению
Для вас не подходит какой-то такой вариант?
location / { root ...; } - отдаем статику
location /filestorage { root ...; internal; } - скрыли
location /download { rewrite ...; } - в down.php
location ~* \.php$ { proxy ...; } - на бекенд


Goncharov Yuri пишет:
> Добрый день. Прошу у Вас помощи. Теоретически разобрался с 
> X-Accell-Redirect, всё вроде работает, но есть несколько вопросов.
> Папка в которой будут лежать медиа-данные проэкта физически находятся 
> внутри проэкта (девелоперы утверждают что выносить ее за пределы проэкта
> для них очень сложно и сейчас это реализовать невозможно, хотя я 
> продолжаю настаивать).
> Дык вот получается что, например файл по адресу 
> /www/projects/project/data/filestorage/1.jpg
> отдаётся корректно используя файлик down.php в котором 
> header("X-Accel-Redirect: /filestorage/".$path); и т д, как положено.
> Меня интересует вопрос как мне запретить прямой доступ через
> http://domain.com/data/filestorage/1.jpg в моем случае
> 
> Такая статика обрабатывается как я понял первым в моём конфиге location 
> и сделать там allow/deny неверно, так как перестают читаться вся 
> остальная статика проэкта
> по понятной причине. А в случае с internal такие ограничения (как у меня 
> в конфиге) попросту не работают.
> 
> Что я делаю не так и какие есть варианты?
> 
> Конфиги привожу ниже, спасибо заранее.
> 
> 
> nginx.conf:
> 
>    server {
>        listen       80;
>        server_name  .domain.com;
>        include proxy;
>        # Static files location
>        location ~* 
> ^(?!/download/).+\.(jpg|jpeg|gif|png|ico|zip|gz|rar|bz2|xls|exe|pdf|txt|wav|bmp|js|swf|css|xml)$ 
> 
>            {
>            root   /www/projects/project;
>            }
>        location /filestorage {
>            root /www/projects/project/data/;
>            allow 127.0.0.1;
>            deny all;
>            internal;
>        }
> 
>    }
> 
> proxy:
> 
>        location / {
>            set $subdomain "";
>            if ($host ~* ^x([0-9]+)\.domain.com$){
>            set $subdomain $1;
>            rewrite ^/download/(.*) 
> /down.php?intUserID=$subdomain&path=$1 break;
>            }
> .......[skipped]
> 






More information about the nginx-ru mailing list