Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Internal redirect. Howto
Извините, но конфиг у вас какое-то.. странный.
Может потому что поскипанный
Но не ясно, зачем описывать все статические файлы по расширению
Для вас не подходит какой-то такой вариант?
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]
|