ПРОЕКТЫ 


  АРХИВ 


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]

Re: Internal redirect. Howto


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Internal redirect. Howto
  • From: Sergej Kandyla <sk.paix@xxxxxxxxx>
  • Date: Thu, 12 Feb 2009 15:38:57 +0200
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=0FEUORgxi3/7aXZuN2PsF1rWG+IgKKfq4tyQRRzLOKI=; b=b2m/NMeMbnnYQILw9/RDQ0f+1jtfLwo7mZv4s84TUTgZtf2czQxiMgN1zrto45Hy7k rIzD4hHudY2ZgkqzIsSfIK+1X1dBeWPxfw+sZDHPUmeQkDxWNQAhWaLl3iY93C9hic/5 YEgiAoas2kK6woxQFLLa0Wk5dXb4ogH9PUHUo=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=a8PQCo5Q7/X/rwMAmVS9Nu0eYl1xLa0c33cu+TMXv0XRrpGC+PsPwJ7cWPaKPN1jeD Gp/QM0dxeHS+L2B7ZvroHOU2+qfCd2hBG1j5HfaIzgEHNP1ZaRBJUCIFE9SgMxjrzWrd /ymmDWk8s9XpoICDG9UElbwsAef8yP1JNlt/U=
  • In-reply-to: <4993E0B4.2030801@xxxxxxxxxx>
  • References: <4993E0B4.2030801@xxxxxxxxxx>

Goncharov Yuri пишет:
Добрый день. Прошу у Вас помощи. Теоретически разобрался с X-Accell-Redirect, всё вроде работает, но есть несколько вопросов. Папка в которой будут лежать медиа-данные проэкта физически находятся внутри проэкта (девелоперы утверждают что выносить ее за пределы проэкта для них очень сложно и сейчас это реализовать невозможно, хотя я продолжаю настаивать).

нет никаких проблем держать контент в другом месте. Или как вы собираетесь постпуть когда контента станет много?
рабочий пример:

       location /downloads {
           alias /mnt/ad6/content;
           internal;
       }

также повозможности меньше используйте всякого рода if

Дык вот получается что, например файл по адресу /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]





 




Copyright © Lexa Software, 1996-2009.