Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Rewrite rules/MultiViews в nginx
Новая тема
Ответить
цитата
30/11/09 в 13:48
megreep
Собственно обращаюсь за помощью потому как гугль конкретных ответов не дал.
Есть антилич, не самописный. Принцип действия: файлы для скачивания лежат в
private/
, в корне антлича есть download.php, идет обращение на
http://www.host.com/files/download/projects/archive.rar
(под апачем работал multiviews), затем пользователю отдается ссылка
http://www.host.com/files/public/72jfbkjdshbn78nbakdnkjsa/projects/archive.rar
, то есть в
public/
формируется внутренний симлинк на файл.
Options -Indexes +MultiViews
был прописан в
files/.htaccess
Как это дело заставить работать под nginx?
цитата
30/11/09 в 17:42
Alex AWM
проверяешь скриптом права, и отправляешь ответ с "специальным" заголовком
X-Accel-Redirect: /private/archive.rar
и пустой строкой в самом ответе.
Ну или 403 если Forbidden
PS На location /private говоришь internal.
цитата
01/12/09 в 13:45
megreep
сиба. сделал. возник второй вопрос: когда пользователь пытается начать качать по ссылке
http://www.host.com/files/public/72jfbkjdshbn78nbakdnkjsa/projects/archive.rar
- то вываливается 404 ошибка, и причем эту ошибку кажет nginx. В конфиге я прописал:
Код:
location ~* ^.+\.(rar|zip)$ {
root /home/user/host.ru/html/fafiles/public/;
}
чтобы nginx отдавал сам файлы а не перекладывал это на плечи апача. Только почему-то такая конструкция не работает. Возможно ли это из-за того чтобы в /public/ лежит не сам файл а симлинк на него?
в созданной директории
public/87928342376jsdnfb7823/
антилич создает еще такой .htaccess:
Код:
RewriteEngine On
Options +FollowSymLinks
RewriteBase /fafiles/0a9ed8fdac28244f1cfd51d2160d6a9b/
RewriteCond %{HTTP_REFERER} !^http://www\.host\.ru/fafiles/download/ [NC,OR]
RewriteCond %{REMOTE_ADDR} !^xx\.xx\.xx\.xx$
RewriteRule .* - [F]
цитата
01/12/09 в 19:43
Alex AWM
Что-то сложное у тебя там и под апач заточеное.
Делай просто.
У тебя есть
Код:
location /private {
root /path/to/files; /* и помни что у тебя все файлы будут искаться как /path/to/files/private/... */
internal;
}
location /public {
proxy_pass
http://127.0.0.1;
/* отправляешь в антилич скрипт в апач, или
что там у тебя */
}
в скрипте проверяешь referer и сессию
(впрочем реферер можешь и в location public проверить)
Простых антиличей в рассылке nginx тоже было.
Новая тема
Ответить
Эта страница в полной версии