Re: Мистика... (Редиректы, имена и CRLF)

Maxim Dounin mdounin на mdounin.ru
Вт Сен 7 00:10:24 MSD 2010


Hello!

On Mon, Sep 06, 2010 at 10:48:05PM +0400, Andrey Repin wrote:

> Здравствуйте, Уважаемый(-ая, -ое) All!
> 
> Объясните кто-нибудь, что происходит?
> 
> nginx/W32 установлен в папке, путь к которой - всего каких-то 55 символов
> вместе с буквой диска.

Какая версия nginx'а и как называется папка?  E.g. с русскими 
именами папок точно проблемы, у меня ругается как-то так:

2010/09/06 23:13:30 [emerg] 4020#3308: CreateFile() "C:\Documents and Settings\mdounin\Мои документы\long-long-long-long-long-very-long-name\nginx-0.8.50/conf/nginx.conf" failed (1113: Символ Юникода не имеет сопоставления в конечной многобайтовой кодовой странице)

Сделать debug log тоже было бы полезно.  Смотреть тут:

http://nginx.org/en/docs/debugging_log.html

Впрочем, интерес в основном теоретический - исходников 
windows-версии ни у кого кроме Игоря нет.

> Прописано всего-то три редиректа и включен PHP-FCGI.
> 
>         # Закрыть прямое обращение к главному файлу проекта
>         if ( $request_uri = /proxy.php ) {
>             rewrite ^(.*)$ $scheme://$server_name:$server_port/? last;
>         }
> 
>         # Прекратить обработку редиректов, если запросили корень
>         if ( $request_uri = / ) {
>             break;
>         }
> 
>         # Передать путь в проект, если запрошено что-то ещё
>         if ( !-f $request_uri ) {

Just a side note: -f принимает имя файла как аргумент, передавать 
ему $request_uri - достаточно бессмысленно, ему надо кормить 
$request_filename.  Впрочем, как правильно переписать конфиг 
вам уже сказали, этот интересен только с точки зрения дебага.

>             rewrite ^(.*)$ /proxy.php?node=$1 ;
>         }
> 
>         # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
>         #
>         location ~ \.php$ {
>             root           html;
>             fastcgi_pass   127.0.0.1:9000;
>             fastcgi_index  index.php;
>             include        fastcgi.conf;
>         }
> 
> 
> curl http://localhost/xxx/
> чилд падает.
> 
> Меняю в последнем редиректе "node" на "nod". Перезапускаю.
> Падать перестаёт.
> 
> Но меня это не устраивает. Распаковываю дистрибутив. 47 символов до папки.
> По одной переношу настройки в дефолтный конфиг.
> На добавлении первого редиректа (последним) - чилд падает.
> 
> Чертыхаюсь, копирую первую установку в корень диска - всё работает так, как
> хотелось, без всяких шаманств...

Maxim Dounin



Подробная информация о списке рассылки nginx-ru