ПРОЕКТЫ 


  АРХИВ 


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: nginx + php-fpm


  • To: "nginx-ru@xxxxxxxxx" <nginx-ru@xxxxxxxxx>
  • Subject: Re: nginx + php-fpm
  • From: Anton Kiryushkin <swood@xxxxxxxxxxx>
  • Date: Thu, 11 Apr 2013 15:34:52 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fotofor.biz; s=google; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:content-type; bh=HKb4830aBMCEk28oohoNJo99AKwWOyvKvmS1pKGPR2I=; b=h6uIfFlmLs+8sJxDpR9x5MFanygKovpAFcqjpLi/wl0JSIiRZXum4SHHMyzMJXWER7 JTi72/vmIoAXRGVFO+keDPbVKhLDCKqmpvCK/hNrYydXtn3W2d6A8Ko2vyyLes3fJ9va Vk4vZntrDvkJgtVVtoRayr/+twD/9VeZpJWKk=
  • In-reply-to: <20130411111747.GL62550@mdounin.ru>
  • References: <CAM_jxg1K8-qcnzGPLJ2pF3iq+C0qSTtN5k-hLEKAkYv=+k+2eQ@mail.gmail.com> <20130411111747.GL62550@mdounin.ru>

Максим, спасибо за ответ.

Если вы про определение переменной $script, то даже если от него отказаться и использовать штатную переменную $fastcgi_script_name, то от этого то, к ему обращается nginx не меняется. Для меня остается вопросом, почему игнорируется / в пути, то есть почему nginx обращается к файлу:
/ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php
А не к :
/.php

Что же до ничего не считает, то это абсолютно понятно и к этому вопросов нет.


11 апреля 2013 г., 15:17 пользователь Maxim Dounin <mdounin@xxxxxxxxxx> написал:
Hello!

On Thu, Apr 11, 2013 at 02:11:18PM +0400, Anton Kiryushkin wrote:

> Всем добрый день
>
> Возможно это боян и только я не знаю как так получается. Но столкнулся с
> интересной вещью.
> Есть сайт, туда пользователи могут загружать картинки. И загружают. Но,
> если вместо картинки, под видом картинки, они загрузят php-код, то,
> казалось бы, и черт с ним. Сервер его не обработает. Но нашли ведь лаз
> обращаться к файлу так:
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php
>
> В location nginx прописано тоже вроде бы корректно:
>
>        location ~ "^(.+\.php)($|/)" {
>                 set $script $uri;
>                 if ($uri ~ "^(.+\.php)($|/)") {
>                         set $script $1;
>                 }
>                 if ($uri ~ "^(.+\.php)(/.+)") {
>                         set $script $1;
>                 }
>                fastcgi_index  index.php;
>                 fastcgi_split_path_info         ^(.+\.php)(.*)$;
>                 fastcgi_param  PATH_INFO        $fastcgi_path_info;
>                 fastcgi_pass   fpm-backend;
>                 include fastcgi_params;
>                 fastcgi_param SCRIPT_NAME $script;
>                 fastcgi_param  SCRIPT_FILENAME
>  $document_root$fastcgi_script_name;
> }
>
> То есть все, что оканчивается на .php. Соблюдается. Но ведь файла нет. Я
> имею ввиду ".php". Почему nginx считает файлом
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php, ведь тут есть обычный
> слэш?

Потому что nginx вообще ничего не считает, файла вообще может не
быть, или он может быть на другой машине.  Если вы хотите, чтобы
nginx проверял существование файла, то добавьте try_files - и будет
проверять.

В данном случае, однако, правильное решение - это не городить
костыли в nginx'е, а исправить поведение php, чтобы он открывал
ровно то, что сказали, а не пытался придумать правильное имя файла
сам.  AFAIK, выключить cgi.fix_pathinfo - помогает.

--
Maxim Dounin
http://nginx.org/en/donation.html

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru



--
Best regards,
Anton Kiryushkin
 
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.