идентификатор запроса в nginx
Andrew Kopeyko
kaa at zvuki.ru
Tue May 22 13:52:26 MSD 2007
On Tue, 22 May 2007, Rommer wrote:
> Здравствуйте,
>
> Igor Sysoev wrote:
>> On Thu, May 10, 2007 at 01:07:24PM +0300, Rommer wrote:
>>
>>> Есть ли какая-нибудь рандомная переменная в nginx, которая уникально
>>> идентифицирует каждый запрос?
>>> Например как $remote_port, только чтобы скрипты на бэкенде её узнать не
>>> могли.
>>
>> Запрос - нет, соденинения - да: $connection.
>>
>
> Ладно опишу задачу.
> Есть такой замечательный модуль mod_aclr (http://miksir.pp.ru/?r=69) для
> apache 1.3,
> я его переписал для apache 2.0 и хочу использовать. Вот его минимальная
> конфигурация
> для nginx'а:
>
> location / {
> proxy_pass http://127.0.0.1:80;
> proxy_set_header X-Accel-Internal /internal_xxx;
> }
> location /internal_xxx/ {
> internal;
> rewrite ^/internal_xxx/(.*)$ /$1 break;
> root /;
> }
>
>
> В отличие от оригинального модуля, мой выдает содержимое X-Accel-Internal +
> полный путь
> к файлу, а не X-Accel-Internal + get-запрос, который пришёл в httpd в случае
> статического
> файла. + скрывает для скриптов содержимое заголовка X-Accel-Internal.
> Но в этой конфигурации есть дыра: если скрипт на стороне бэкенда выдаст,
Может, проще будет уточнить root ?
Сейчас, действительно, nginx отдаст /etc/passwd
Ежели не получится ограничиться одним значением root - опишите несколько
локейшенов с признаком internal и\или используйте map
Мне кажется, это более простой и более наглядный путь, нежели выбранные
вами пляски вокруг несуществующего (пока?) $request_key.
> например,
> X-Accel-Redirect: /internal_xxx/etc/passwd, то nginx спокойно его и отдаст в
> браузер.
> Я решил обойти это следующим способом:
--
Best regards,
Andrew Kopeyko <kaa at zvuki.ru>
More information about the nginx-ru
mailing list